ExcelのROW関数は今いるセルの行番号、COLUMN関数は列番号を返します。単体でも使えますが、VLOOKUPと組み合わせると数式を右にコピーするだけで列番号が自動で変わり、手直しの手間をなくせます。
この記事では、次の内容を順番に解説します。
- ROW関数・COLUMN関数の基本の使い方
- VLOOKUPとCOLUMN関数を組み合わせる方法
- 数式を右にコピーするときの便利な使い方
ROW関数・COLUMN関数とは?
どちらもセルの「番号」を返すシンプルな関数です。
- ROW():その数式が入っているセルの行番号を返します。引数なしで使うと今いるセルの行番号になります。
- COLUMN():その数式が入っているセルの列番号を返します。A列なら1、B列なら2、C列なら3です。
' C5セルに入力した場合の結果
=ROW() ' → 5(5行目)
=COLUMN() ' → 3(C列 = 3列目)
セルを指定して使うこともできます。
=ROW(A10) ' → 10(A10セルの行番号)
=COLUMN(D1) ' → 4(D列の列番号)
VLOOKUPとCOLUMN関数を組み合わせるには?
VLOOKUPで複数の列のデータを取り出したいとき、通常は列番号を手動で変えながらコピーします。
' 手動で列番号を変える場合(コピーするたびに直す必要がある)
=VLOOKUP(A2, $F:$J, 2, FALSE) ' 商品名(2列目)
=VLOOKUP(A2, $F:$J, 3, FALSE) ' 単価(3列目)
=VLOOKUP(A2, $F:$J, 4, FALSE) ' 仕入れ先(4列目)
COLUMN関数を組み合わせると、右にコピーするだけで列番号が自動で変わります。
' COLUMN関数を使う場合(右にコピーするだけでOK)
=VLOOKUP($A2, $F:$J, COLUMN()-1, FALSE)
COLUMN()-1 の意味
たとえばこの数式がB列に入っている場合、COLUMN() は2を返します。そこから1を引くと1になり、VLOOKUPは1列目のデータを取り出します。C列に移ると COLUMN() は3になり、2列目のデータを取り出します。このように右にコピーするだけで列番号が1ずつ増えていきます。
引く数字は数式を入力するセルの位置によって変わります。数式がB列から始まるなら COLUMN()-1、C列から始まるなら COLUMN()-2 というように調整します。
ROW関数の使い方
ROW関数は行番号を返すので、行ごとに番号を自動で振りたいときに使えます。
' A2セルから連番を振りたい場合
=ROW()-1 ' A2セルなら2-1=1、A3セルなら3-1=2、A4セルなら4-1=3…
途中に行を挿入・削除しても自動で番号が振り直されるので、手動で番号を管理するよりも便利です。
まとめ
ROW・COLUMN関数は単体では地味ですが、他の関数と組み合わせることで大きく役立ちます。
- ROW():今いるセルの行番号を返す。連番を自動で振るときに使う。
- COLUMN():今いるセルの列番号を返す。A列=1、B列=2、C列=3。
- VLOOKUPと組み合わせる:
COLUMN()-調整値を列番号に使うと、右にコピーするだけで列番号が自動で変わる。
よくある質問
COLUMN()とCOLUMN(A1)は何が違う?
引数なしの COLUMN() は数式が入っているセルの列番号を返します。COLUMN(A1) はA1セルの列番号(1)を固定で返します。数式を右にコピーしたときに自動で列番号を変えたい場合は引数なしの COLUMN() を使います。
VLOOKUPで引く数字(-1や-2)はどうやって決める?
数式を入力するセルの列番号から、取り出したい列の番号(VLOOKUPの3番目の引数)の開始値を引いた数です。たとえばB列(列番号2)から始めてVLOOKUPの2列目を取り出したい場合は COLUMN()-0(引かない)、1列目を取り出したい場合は COLUMN()-1 になります。実際に数式を入れてみて、期待通りの値が返るか確認するのが早いです。
ROW関数で1から始まる連番を振るには?
数式を入れる行番号から1を引く数を調整します。2行目から始めるなら =ROW()-1、3行目から始めるなら =ROW()-2 です。1行目から始める場合はそのまま =ROW() で1が返ります。
COLUMN関数でA・B・Cのようなアルファベットの列名を取得できる?
COLUMN関数は数字の列番号を返すため、アルファベットは直接取得できません。ただし =SUBSTITUTE(ADDRESS(1, COLUMN(), 4), "1", "") という数式を使うと、列番号に対応するアルファベット(A・B・Cなど)を取り出すことができます。
VLOOKUPの代わりにXLOOKUPを使っている場合は?
XLOOKUPは列番号の指定が不要なため、COLUMN関数との組み合わせは必要ありません。XLOOKUPは取り出したい列を範囲で直接指定する方式なので、コピーによる列番号のズレを気にしなくて済みます。


