エクセルでVLOOKUP関数やINDEX関数と組み合わせて使うことが多い、COLUMN関数の使い方をご紹介します。COLUMN関数で列番号をアルファベットで取得する方法についても解説しているので、ぜひ参考にしてみてください。
COLUMN関数の使い方
読み方は「カラム」で、意味は「列」です。
COLUMN関数は、指定したセルまたは範囲の先頭の列番号を返します。
例えば COLUMN(C2) なら、返り値はC2セルの列番号 3 です。セル参照は省略可能で、省略するとCOLUMN関数を入力したセルの列番号 1 を返します。
COLUMN関数の構成要素:([範囲])
COLUMNS関数は指定した配列またはセル参照の、列数を返します。例えば COUMNS(C2:D2) なら、返り値は列数 2 です。
なお COLUMN()-1 は、現在の列番号 – 1 のことです。
セル参照を省略すると数式を入力したセルの列番号を返すので、例えばC列に COLUMN()-1 を入力した場合の返り値は 3-1=2 です。
COLUMNS関数の構成要素:(配列)
COLUMN関数でアルファベットを取得する方法
まずADDRESS関数で、指定した行と列のセル参照を文字列で取得します。
例えば ADDRESS(ROW(C2),COLUMN(C2),4) なら、返り値は「C2」です。参照の種類は省略すると絶対参照($C$2)を返すため、 4 の相対参照を指定してください。
ADDRESS関数の構成要素:(行番号, 列番号, [参照の種類], [参照形式], [シート名])
次にSUBSTITUTE関数で、文字列(C2)から行番号(2)だけを削除します。
例えば SUBSTITUTE(ADDRESS(ROW(C2),COLUMN(C2),4),ROW(C2),””) なら C2 から 2 を検索して空白に置換するので、返り値は C です。
ROW関数とCOLUMN関数のセル参照を省略すると、現在の列をアルファベットで返します。
SUBSTITUTE関数の構成要素:(テキスト, 検索文字列, 新しい文字列, [置換対象])
COLUMN関数をVLOOKUP関数と組み合わせる方法
VLOOKUP関数の列番号は、オートフィルでコピーしたときに連番になりません。
このとき列番号にCOLUMN関数を組み合わせることで、オートフィルで複数列の値を抽出できます。
VLOOKUP関数の構成要素:(検索値, 範囲, 列番号, [検索方法])
COLUMN関数のセル参照には、抽出する先頭の列をアルファベットで指定してください。
例えば VLOOKUP($A$2,$A$5:$D$7,COLUMN(B:B),FALSE) なら、検索値と一致する値をB列から返します。これをオートフィルでコピーすると、列番号はC列、D列に移動します。