Excel関数 逆引き集 | 列番号を自動取得 → COLUMN

Excel VBA Excel
スポンサーリンク

概要

「ここって何列目?」「数式の中で列番号を自動で増やしたい」
そんなときに使うのが 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」

このあたりを「型」として覚えておくと、
列の挿入・削除に強く、コピーにも強い数式が書けるようになります。

タイトルとURLをコピーしました