概要
「ここって何列目?」「数式の中で列番号を自動で増やしたい」
そんなときに使うのが COLUMN 関数です。
COLUMN は、
「指定したセル(または自分自身のセル)が、シート上で何列目か(A=1, B=2, …)」
という 列番号を数値で返す関数です。
VLOOKUP・INDEX・動的な参照・コピペに強い数式づくりなどで、地味ですがめちゃくちゃよく使います。
COLUMN の基本
書式と意味
=COLUMN( [参照] )
参照を省略すると、「この式が入っているセルの列番号」を返します。
例:
C3 に
=COLUMN()
と入れると、結果は 3(C列は3列目)になります。
D10 に
=COLUMN()
と入れると、結果は 4(D列は4列目)になります。
セルを指定することもできます。
=COLUMN(A1) → 1
=COLUMN(D5) → 4
=COLUMN(Z1) → 26
よく使うパターン(列番号を式の中で使う)
VLOOKUP の「列番号」を自動で増やす
VLOOKUP の第3引数(列番号)を手書きすると、
列を挿入したときにズレたり、コピペしたときに修正が面倒になります。
そこで COLUMN を使って、自動的に列番号を返させます。
例:
A列:商品コード
B列:商品名
C列:単価
E2 の商品コードで検索し、
F2 に商品名、G2 に単価を出したいとします。
F2:
=VLOOKUP($E2, $A$2:$C$100, COLUMN(B1), FALSE)
G2:
=VLOOKUP($E2, $A$2:$C$100, COLUMN(C1), FALSE)
COLUMN(B1) → 2
COLUMN(C1) → 3
となるので、
「列番号 2,3 を自動で返してくれる」仕組みです。
列を挿入しても、B列やC列さえ変わらなければ、
COLUMN が正しい列番号を返してくれるので、メンテナンスが楽になります。
任意の列を「1列目扱い」にするテクニック
COLUMN はそのままだと A=1, B=2, C=3… ですが、
「B列を1列目として扱いたい」
「D列を1列目として扱いたい」
といった場面がよくあります。
例:B列を1列目として扱う
=COLUMN(B1) - COLUMN($B$1) + 1
- B列 → 2 – 2 + 1 = 1
- C列 → 3 – 2 + 1 = 2
- D列 → 4 – 2 + 1 = 3
という具合に、「B列を起点とした連番」を作れます。
VLOOKUP などで「範囲の左から何列目か」を動的に計算したいときに便利です。
動的な参照づくりに使う(INDEXなどと組み合わせ)
COLUMN は、INDEX や OFFSET などと組み合わせることで、
「横にコピーすると参照列が自動で変わる」式を作るのにもよく使われます。
例:1行の集計結果を横方向に並べる
A2:D2 にある4つの値を、
F2:I2 に「1列ずつ」持ってきたい場合。
F2:
=INDEX($A$2:$D$2, COLUMN(A1))
F2 にこれを入れて右にコピーすると、
- F2(A列相当) → COLUMN(A1)=1 → INDEXの1列目=A2
- G2(B列相当) → COLUMN(B1)=2 → INDEXの2列目=B2
- H2 → 3 → C2
- I2 → 4 → D2
というように、列番号を自動で増やしながら取り出せます。
実務でのちょっとした使いどころ
条件付き書式などで「何列目か」を条件に使う
例えば「偶数列だけグレーに塗る」など、
列番号に応じた条件付けをしたいときにも使います。
条件付き書式の数式例:
=MOD(COLUMN(),2)=0
これで、「列番号が偶数の列だけ」に書式を適用できます。
例題
問題1: C3 に「このセルが何列目か」を表示してください。
=COLUMN()
問題2: A1, D5, Z10 の列番号を、それぞれ B1, B2, B3 に表示してください。
B1:
=COLUMN(A1)
B2:
=COLUMN(D5)
B3:
=COLUMN(Z10)
問題3: VLOOKUP で、E2 の商品コードを A2:C100 から検索し、F2 に「列番号を COLUMN で自動取得する」形で商品名を表示してください(商品名はB列)。
=VLOOKUP($E2, $A$2:$C$100, COLUMN(B1), FALSE)
問題4: B列を「1列目」として扱いたいとき、C列のセルに「B=1, C=2, D=3…」となる式を書いてください(行は1行目とする)。
C1:
=COLUMN(C1) - COLUMN($B$1) + 1
問題5: A2:D2 の4つの値を、F2:I2 に1つずつ並べたいとき、F2 に書くべき INDEX+COLUMN の式を書いてください(右にコピーして使う)。
=INDEX($A$2:$D$2, COLUMN(A1))
まとめ
COLUMN は単純ですが、使いこなすと数式が一気に“賢く”なります。
=COLUMN()… 自分の列番号=COLUMN(A1)… 指定セルの列番号- VLOOKUP・INDEX などの「列番号」を自動化できる
- 起点列を変えたいときは「COLUMN(列) – COLUMN(起点列) + 1」
このあたりを「型」として覚えておくと、
列の挿入・削除に強く、コピーにも強い数式が書けるようになります。
