- 作成日 : 2025年8月25日
COLUMNS関数の使い方:エクセルで範囲の列数を取得する方法
COLUMNS関数は、指定した範囲や配列の列数を返すエクセルの情報関数です。データ範囲の大きさを動的に把握したり、可変範囲での計算を自動化したりする際によく使われます。
表の構造を自動認識するマクロの作成、動的な集計範囲の設定、データ検証の自動化など、様々な場面で活用されています。本記事では、COLUMNS関数の基本的な使い方から実務での応用例、ROWS関数との組み合わせ、動的配列での活用方法、そしてよくある使用上の注意点とその対策まで、初心者にも分かりやすく解説します。
COLUMNS関数の使い方
COLUMNS関数とは
COLUMNS関数は、指定したセル範囲や配列に含まれる列の数を数値として返す関数です。この関数の最大の特徴は、範囲のサイズが変わっても自動的に列数を再計算することです。たとえば、A1:C1の範囲なら3を返し、A1:Z1の範囲なら26を返します。手動で列を数える必要がなく、特に大きな表や可変サイズのデータを扱う際に適しています。
単純に列数を知るだけでなく、他の関数と組み合わせることで、動的な数式の作成や、データ範囲の自動調整など、高度な処理が可能になります。VBAを使わずに、ワークシート関数だけで柔軟な処理を実現できる基本的な関数のひとつです。
基本構文
COLUMNS関数の構文は非常にシンプルです。
=COLUMNS(配列)
配列:列数を数えたい範囲を指定します。セル範囲、配列定数、名前付き範囲などを指定できます。
基本的な使用例
最も基本的な使用例から見ていきましょう。
=COLUMNS(A1:C1) // 結果:3
=COLUMNS(A1:Z1) // 結果:26
=COLUMNS(A:A) // 結果:1(列全体を指定)
=COLUMNS(A:E) // 結果:5(複数列全体を指定)
複数行にまたがる範囲でも、列数のみを返します。
=COLUMNS(A1:E10) // 結果:5(行数に関係なく列数のみ)
=COLUMNS(B5:H20) // 結果:7
配列定数での使用:
=COLUMNS({1,2,3,4,5}) // 結果:5(横方向の配列)
=COLUMNS({1;2;3;4;5}) // 結果:1(縦方向の配列)
=COLUMNS({1,2,3;4,5,6}) // 結果:3(2行3列の配列)
単一セルと複数セルの扱い
COLUMNS関数は単一セルを指定した場合も1を返します。
=COLUMNS(A1) // 結果:1
=COLUMNS($B$5) // 結果:1
結合セルの場合:
// A1:C1が結合されている場合
=COLUMNS(A1) // 結果:1(結合セルは1つとして扱われる)
COLUMNS関数の利用シーン
動的な集計範囲の設定
データの列数が変動する表での合計や平均の計算に活用します。
可変列数の合計計算:
=SUM(A1:INDEX(1:1,,COLUMNS(A1:Z1)))
最終列までの平均値:
=AVERAGE(B2:INDEX(2:2,,COLUMNS($B$1:$Z$1)))
横方向の累計:
=SUM(OFFSET(A1, 0, 0, 1, COLUMNS($A$1:D1)))
データ検証と整合性チェック
複数の表の列数が一致しているか確認する場合に使用します。
=IF(COLUMNS(表1) = COLUMNS(表2), “列数一致”, “列数不一致”)
表構造の差異を確認する目的で使えます。
必要列数のチェック:
=IF(COLUMNS(データ範囲) >= 10, “処理可能”, “列数不足”)
インポートデータの検証:
=IF(COLUMNS(A1:Z1) = 26, “正常”, “データ構造エラー”)
動的な番号付けとインデックス
列番号を自動的に生成する場合に活用します。
連番の自動生成:
=COLUMNS($A$1:A1) // 右にコピーすると1, 2, 3…と自動で増加
相対的な列位置の計算:
=COLUMNS($A$1:A1) / COLUMNS($A$1:$Z$1) * 100 // 進捗率として使用
VLOOKUP/INDEX関数での列指定
可変範囲でのデータ抽出に使用します。
最終列のデータを取得:
=INDEX(A1:Z10, 行番号, COLUMNS(A1:Z10))
動的なVLOOKUP:
=VLOOKUP(検索値, A:Z, COLUMNS(A:Z), FALSE)
配列数式での活用
複数列に対する一括処理で使用します。
全列の最大値を配列で取得:
{=MAX(OFFSET(A1, 0, COLUMN(A:E)-1, ROWS(A1:A10), 1))}
列ごとの合計を横に展開:
=SUMPRODUCT((COLUMN(A1:E10)=COLUMNS($A$1:A1))*A1:E10)
レポートの自動フォーマット
表の幅に応じた書式設定に活用します。
=IF(COLUMNS(データ範囲) > 10, “横長レイアウト”, “標準レイアウト”)
印刷範囲の自動調整:
=ADDRESS(1, COLUMN(印刷範囲)+COLUMNS(印刷範囲)-1)
または
=ADDRESS(ROW(印刷範囲), COLUMN(印刷範囲)+COLUMNS(印刷範囲)-1)
COLUMNS関数の応用・他関数との組み合わせ
ROWS関数との組み合わせ
範囲の総セル数を計算します。
総セル数 = ROWS(範囲) * COLUMNS(範囲)
=ROWS(A1:E10) * COLUMNS(A1:E10) // 結果:50
正方形範囲の判定:
=IF(ROWS(範囲) = COLUMNS(範囲), “正方形”, “長方形”)
OFFSET関数での動的範囲作成
可変サイズの範囲を定義します。
=SUM(OFFSET(A1, 0, 0, ROWS(A:A), COLUMNS(1:1)))
拡張する範囲の定義:
=OFFSET($A$1, 0, 0, 10, COLUMNS($A:A)+追加列数)
INDIRECT関数での動的参照
列数に基づいた動的なセル参照を作成します。
=INDIRECT(“R1C” & COLUMNS(A1:E1), FALSE) // E1を参照
最終列の列文字を取得:
=CHAR (64 + COLUMNS(A1:Z1)) // 26列目なら”Z”
COLUMN関数との使い分け
COLUMN関数は列番号、COLUMNS関数は列数を返します。
=COLUMN(C1) // 結果:3(C列は3番目)
=COLUMNS(A1:C1) // 結果:3(3列分)
現在位置の相対列番号:
=COLUMN() – COLUMN($A$1) + 1
条件付き書式での使用
列数に応じた動的な書式設定を行います。
条件式:=COLUMN() <= COLUMNS($A$1:$E$1)
// 指定列数以内のセルに書式を適用
TRANSPOSE関数との連携
行列変換後のサイズ確認に使用します。
変換前列数:=COLUMNS(元データ)
変換後行数:=ROWS(TRANSPOSE(元データ))
// 両者は一致する
COLUMNS関数のよくあるエラーと対策
#NAME?エラーの対処
関数名のスペルミスが原因です。
誤:=COLUMS(A1:E1) // 「N」が抜けている
正:=COLUMNS(A1:E1)
#REF!エラーの対処
無効な範囲参照が原因です。
誤:=COLUMNS(削除されたシート!A1:E1)
対策:=IFERROR(COLUMNS(範囲), “範囲エラー”)
結合セルでの注意点
COLUMNS 関数は参照範囲に含まれる「列数」をそのまま返します。
// 例:A1:C1 を結合していても
=COLUMNS(A1:C1) // 結果:3
※結合セルを 1 列として数えたい場合は、結合を解除するか、
=COLUMNS(A1) のように左上セルだけを参照する必要があります。
非表示列の扱い
COLUMNS関数は、非表示列も含めて列数に含まれます。
// B列が非表示でも
=COLUMNS(A1:C1) // 結果:3
表示列のみをカウントする場合はVBAが必要
大きな範囲での性能問題
列全体を指定すると処理が重くなることがあります。
非効率:=COLUMNS(1:1048576)
効率的:=COLUMNS(A1:XFD1) // 必要な範囲のみ指定
配列数式での注意点
旧バージョン(Ctrl+Shift+Enter が必要)
列番号が 5 列目より右にあるセルだけを合計する例
(`各範囲` は複数列を含む同サイズ範囲、`値` は合計対象の同サイズ範囲)
{=SUM( IF( (COLUMN(各範囲) – MIN(COLUMN(各範囲)) + 1) > 5, 値, 0))}
動的配列(Excel 365 以降)
同じ判定を 列抽出専用関数 CHOOSECOLS と SUM でシンプルに記述。Enter だけで確定します。
=SUM(CHOOSECOLS( 値, SEQUENCE(, COLUMNS(値)-5, 6, 1) )) )}
動的配列(スピル)での使用
Excel 365では動的配列に対しても使用可能:
=COLUMNS(FILTER(データ, 条件))
// フィルター結果の列数を取得
COLUMNS関数で列数を把握する
COLUMNS関数は、指定範囲の列数を返すシンプルで扱いやすい関数です。
動的な集計範囲の設定、列数による整合性チェック、列番号の生成など、表の構造を基にした処理に使えます。
ROWS関数との組み合わせでセル数を計算したり、OFFSET関数やINDIRECT関数と組み合わせることで、動的な参照の設定もできます。
COLUMNS関数は、表形式データの構造を把握したり、柔軟な数式設計を行ったりするための基本的な関数です。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
関連記事
ExcelのPHONETIC関数の使い方:読み仮名取得からエラー対策まで
PHONETIC関数は、ふりがな情報が設定されているセルから読み仮名(ふりがな)を抽出できる関数です。顧客リストの名前を読み仮名でソートしたい、振り込みリストを作成する際にフリガナが必要、といった場面で役立ちます。 この記事では、PHONE…
詳しくみるFALSE関数の使い方:論理値を扱う基本関数をマスターしよう
Excel の FALSE関数は、論理値「FALSE」を返すシンプルな関数です。単体では使用頻度が低いものの、IF関数やAND関数などの論理関数と組み合わせることで、条件分岐や判定処理において重要な役割を果たします。本記事では、FALSE関…
詳しくみるPERCENTILE関数の使い方:エクセルでパーセンタイルを求めてデータ分析
PERCENTILE関数は、データセットの任意のパーセンタイル値を計算するエクセルの統計関数です。パーセンタイルとは、データを小さい順に並べたときに、指定した割合の位置にある値のことで、データの分布を詳細に把握するために使用されます。成績評…
詳しくみるUNICHAR関数の使い方:Unicode番号から文字を表示する方法
UNICHAR関数は、Unicode番号(コードポイント)に対応する文字を返す関数です。特殊記号や絵文字の挿入、多言語文書の作成、文字コード表の作成など、通常のキーボードでは入力困難な文字を扱う場面で活用されます。例えば、数学記号(∑、∫)…
詳しくみるスプレッドシートで行全体に条件付き書式を設定するには?文字列・数値・日付・複数条件の実践ガイド
スプレッドシートの条件付き書式を使えば、特定の条件を満たす行全体に自動で色を付けることができます。この記事では、文字列、数値、日付、複数条件など、さまざまなケースで行全体に色付けする具体的な手順を解説します。データの可視化が劇的に改善され、…
詳しくみるスプレッドシートで閲覧履歴を確認・非表示(記録停止)にするには?PC・スマホ別に解説
Googleスプレッドシートを複数人で共有して作業する際、「誰がいつファイルを見たか」が気になった経験はないでしょうか。スプレッドシートには『アクティビティ ダッシュボード』という機能があり、Google Workspace(会社・学校)ア…
詳しくみる