COLUMNS関数は、範囲の列の数を返す関数です。B3:D5 なら B・C・D の3列なので 3 です。VLOOKUP の列番号を自動にする、表の大きさを調べるといった使い方をします。
この記事では、COLUMNS 関数の使い方を、VLOOKUP の列番号を右へコピーで変える使い方、COLUMN(列番号)との違い、空欄も数えてしまう間違いまで、実際の Excel の画面で説明します。練習用のファイルも無料でダウンロードできます。
COLUMNS関数の書き方(構文)
=COLUMNS(配列)
| 引数 | 意味 |
|---|---|
| 配列 | 列の数を数えたいセル範囲・配列 |
試したところ、=COLUMNS(A1:Z1) は 26、配列の =COLUMNS({1,2,3}) は 3、1行まるごとの =COLUMNS(1:1) は 16384(Excel の列の数)になりました。
基本の使い方:範囲の列の数を数える
手順:B1 に COLUMNS の式を入れて Enter
商品が横に並んだ表(B3:D5)の列の数を数えて、商品の数を出します。 B1 に次の式を入力して、Enter キーを押します❶。
=COLUMNS(B3:D5)B3:D5青に「列の数を知りたい範囲」を入れるだけです。行の数を数えるときは ROWS 関数を使います。例:A1:L1(12 か月分の見出し)の列の数
=COLUMNS(A1:L1)- 空欄の列も 1 列として数えます。中身のあるセルの数を数えるなら COUNTA を使います。

確認:3 は B・C・D の 3 列

答えは 3 になりました❷。式は、次の順に計算しています。
- B3:D5の左の列から右の列まで数える
⇒ B・C・D - 列の数を返す
⇒ 3
=VLOOKUP(A2,$F$2:$H$10,COLUMNS($F$2:G2),FALSE) のように書くと、右へコピーするたびに列番号が 2・3 と増えます(下の「VLOOKUP の列番号を右へコピーで変える」)。まず動かしてみよう|この記事のサンプルをその場で試せます
ブラウザの上で COLUMNS 関数を試せます。B1 の式は =COLUMNS(B3:D5) で、上の画面と同じ表です。
VLOOKUP の列番号を右へコピーで変える
VLOOKUP の3つ目(列番号)に COLUMNS($A1:B1) を入れると、右へコピーするたびに範囲が1列ずつ広がり、2・3・4 と変わります。4月・5月・6月の列を1つの式で取り出せます。
=VLOOKUP($B$6,$A$1:$D$4,COLUMNS($A1:B1),FALSE)

試したところ、みかんの 4月 80・5月 90・6月 100 が取り出せました。始まりの $A は固定し、終わりの B だけがコピーで動くのがポイントです(VLOOKUPの使い方)。
よくある間違い:空欄も数えてしまう

COLUMNS は「範囲の列の数」なので、入力が無い列も数えます。試したところ、山田・佐藤・鈴木と空欄2つの範囲(B1:F1)は、COLUMNS では 5、入力のあるセルだけを数える COUNTA では 3 でした。人数のように「入力した数」を知りたいときは COUNTA を使います(COUNT・COUNTAの違い)。
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| 数が多すぎる | 空欄の列も数えている | 入力の数なら COUNTA を使う。 |
| VLOOKUP をコピーすると同じ列ばかり出る | COLUMNS の範囲の終わりまで $ で固定した | 始まりだけ固定する($A1:B1)。 |
| 列番号(A=1…)が欲しかった | COLUMNS は列の「数」を返す | 列番号なら COLUMN 関数を使う。 |
よくある質問
COLUMN と COLUMNS の違いは?
COLUMN は「何列目か」(列番号)、COLUMNS は「何列あるか」(列の数)です。試したところ、=COLUMN(D2) は 4、=COLUMNS(B3:D5) は 3 でした(COLUMN関数の使い方)。
行の数を数えるには?
ROWS 関数を使います。使い方は COLUMNS と同じです(ROWS関数の使い方)。
XLOOKUP なら列番号は要りませんか?
XLOOKUP は返す範囲を直接指定するので、列番号は要りません。古いバージョンでも使うファイルなら、VLOOKUP+COLUMNS の書き方が役立ちます(XLOOKUP関数の使い方)。
