- 更新日 : 2026年4月28日
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での突き合わせ作業が常態化。
これは「見えないコスト」を増やし、業務フローを複雑化させ、現場の負担を増大させます。システム乱立のリスクを整理し、業務アセスメントによる根本解決策をご紹介するホワイトペーパーを用意していますので、ぜひお気軽にご覧ください。
※ 掲載している情報は記事更新時点のものです。
※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。
Excel 関数の関連記事
新着記事
-
# 業務効率化の基本
クラウドのメリット・デメリットは?主要サービスやオンプレミスとの比較表をもとに解説
クラウドのメリット・デメリットは? クラウドは、初期費用を抑えて迅速な導入や拡張ができる点が大きなメリットですが、ネット環境への依存や長期的なコスト増といったデメリットも伴います。…
詳しくみる -
# 業務効率化の基本
社外へのファイル共有を安全に行う方法は?リスクやツール選びのポイントを徹底解説
社外へのファイル共有を安全に行う方法は? 社外へのファイル共有は、機密保持のためクラウドストレージ等の専用ツールを活用し、適切な権限管理と期限設定のもとで行うべき重要な業務プロセス…
詳しくみる -
# 業務効率化の基本
マニュアルの種類は?業務・規範・安全管理など目的別に作成する方法を解説
マニュアルの種類は? マニュアルの種類は、活用目的や対象読者に応じて「業務」「操作」「規範」「教育・訓練」「作業」「製品」「安全・危機管理」の7つに大別されます。 業務・操作: 全…
詳しくみる -
# メモ
Windowsのメモ帳で文字を検索するには?文字列を置換・ファイルを横断検索する方法も解説
Windowsのメモ帳で文字を検索するには? Windowsのメモ帳で文字を検索するには、ショートカットキー「Ctrl + F」を使用するのが効率的です。 検索・置換:Ctrl +…
詳しくみる -
# 業務効率化の基本
ノウハウを蓄積するには?組織の知識を資産に変える方法・仕組みづくり・ツール選びを解説
ノウハウの蓄積方法まとめ ノウハウの蓄積とは、個人の経験や技術(暗黙知)を文書や動画などの形式知へ変換し、組織全体で共有・再利用できる資産に変えるプロセスです。 属人化の解消: 担…
詳しくみる -
# ツール
チャットが苦手だと感じる理由は?原因・特徴・克服するためのコツを徹底解説
チャットが苦手だと感じる理由は? チャットが苦手な主な理由は、即時返信へのプレッシャーや感情が伝わりにくい不安にあり、無理に速度を追わず運用ルールを整えることが克服の鍵です。 脱・…
詳しくみる
