ROW・COLUMN・ROWS・COLUMNS関数でExcelの行・列番号を動的に取得する|連番生成・縞模様・配列数式連携の実務手順とMOS試験対策

「行を挿入するたびに連番が崩れてしまう」「条件付き書式で1行おきに色をつけたい」「INDEXと組み合わせて複数セルを動的に参照したい」——こうした実務の課題を解決するのがROW・COLUMN・ROWS・COLUMNS関数です。

これらの関数は単体では単純に見えますが、他の関数と組み合わせることで強力な動的参照・動的集計の仕組みを構築できます。特にROW関数は行を挿入・削除しても崩れない連番生成の定番手法として、実務で頻繁に使われます。

本記事では、ROW・COLUMN・ROWS・COLUMNSの基本構文から、連番自動生成・縞模様の条件付き書式・INDEXとの配列連携・範囲サイズの動的取得まで、実務パターンを体系的に解説します。MOS Excel試験の出題ポイントも末尾にまとめています。

目次

ROW関数の基本構文と動作

ROW関数は、セル参照の行番号を返す関数です。

=ROW([参照])
引数説明省略
参照行番号を取得したいセル参照または範囲省略可

引数を省略すると、ROW関数が入力されているセル自身の行番号を返します。これが連番生成で重要な動作です。

=ROW()      ' セルA3に入力 → 3 を返す
=ROW(A1)    ' どのセルに入力しても → 1 を返す
=ROW(B10)   ' どのセルに入力しても → 10 を返す

範囲を指定した場合(例: =ROW(A1:A5))は行番号の配列 {1;2;3;4;5} を返します。通常のセルに入力すると最初の値(1)だけが表示されますが、スピル対応のExcel 365では複数セルに展開されます。

COLUMN関数の基本構文と動作

COLUMN関数は、セル参照の列番号を返す関数です。

=COLUMN([参照])

ROW関数と対称的な動作をします。列Aが1、列Bが2、列Zが26、列AAが27となります。

=COLUMN()     ' セルD5に入力 → 4 を返す(列Dは4番目)
=COLUMN(A1)   ' どのセルに入力しても → 1 を返す
=COLUMN(C1)   ' どのセルに入力しても → 3 を返す

列番号が不明な場合も=COLUMN()で即座に確認できます。大きなシートでD列・E列・F列…と続く場合に列の位置把握として使われます。

ROWS・COLUMNS関数の基本構文と役割

ROWS関数とCOLUMNS関数は、指定した範囲の行数・列数を返します。ROW/COLUMNが「位置(座標)」を返すのに対し、ROWS/COLUMNSは「大きさ(サイズ)」を返す点が大きな違いです。

=ROWS(配列)     ' 範囲の行数を返す
=COLUMNS(配列)  ' 範囲の列数を返す
=ROWS(A1:A10)      → 10(10行ある)
=ROWS(B2:D8)       → 7(7行ある)
=COLUMNS(A1:E1)    → 5(5列ある)
=COLUMNS(B3:F10)   → 5(F-B+1=5列ある)
関数返す値用途の例
ROW(参照)セルの行番号(位置)連番生成、MOD計算、INDEX連携
COLUMN(参照)セルの列番号(位置)横方向連番、列サイズ動的計算
ROWS(範囲)範囲の行数(サイズ)OFFSET高さ引数、動的カウント
COLUMNS(範囲)範囲の列数(サイズ)OFFSET幅引数、テーブルサイズ確認

実務パターン1:行挿入・削除に崩れない連番生成

手入力の連番(1, 2, 3…)は行を挿入・削除すると即座に崩れます。ROW関数を使えば、行の位置が変わるたびに連番が自動的に更新されます。

基本パターン:先頭行をA2とする場合

' A2セルに入力し、下方向にコピーする
=ROW()-ROW($A$1)

' 動作の仕組み
' A2セル: ROW()=2, ROW($A$1)=1 → 2-1 = 1
' A3セル: ROW()=3, ROW($A$1)=1 → 3-1 = 2
' A4セル: ROW()=4, ROW($A$1)=1 → 4-1 = 3

ポイントはROW($A$1)を絶対参照にすることです。数式をコピーしても常に1行目を基準に連番を生成します。

ヘッダー行が複数ある場合:3行目からデータが始まる場合

' A3セルに入力(2行がヘッダーのとき)
=ROW()-ROW($A$2)

' A3: ROW()=3, ROW($A$2)=2 → 1
' A4: ROW()=4, ROW($A$2)=2 → 2
' A5: ROW()=5, ROW($A$2)=2 → 3

行を途中に挿入・削除しても、連番は自動的に振り直されます。$A$1の行番号(ここでは「1」の部分)を「ヘッダー行数」と同じ数に合わせるのが調整ポイントです。

実務パターン2:MOD+ROWで縞模様(交互行着色)

条件付き書式にROW関数とMOD関数を組み合わせると、1行おきに色をつける縞模様を自動で設定できます。行を追加・削除しても縞模様が崩れないのが大きなメリットです。

設定手順

  1. 縞模様にしたいセル範囲(例: A2:E100)を選択する
  2. 「ホーム」タブ→「条件付き書式」→「新しいルール」を選ぶ
  3. 「数式を使用して、書式設定するセルを決定」を選ぶ
  4. 数式に以下を入力する
  5. 書式ボタンから背景色を設定してOKをクリックする
' 偶数行(2行目・4行目・6行目…)に色をつける場合
=MOD(ROW(),2)=0

' 奇数行(1行目・3行目・5行目…)に色をつける場合
=MOD(ROW(),2)=1

MOD(ROW(),2)は「現在の行番号を2で割った余り」を返します。偶数行では0、奇数行では1になるため、これを条件として背景色を切り替えられます。

3行ごとに色をつけるパターン(グループごとの視認性向上に有効)

' 1・2・3行目→白、4・5・6行目→色、7・8・9行目→白 …のように3行単位で交互
=MOD(INT((ROW()-2)/3),2)=0

実務パターン3:COLUMNで横方向に連番・見出しを自動生成

月次報告書など横方向に「1月・2月・3月…」と連続する見出しを作る場面では、COLUMN関数が活躍します。

' B1セルに入力し右方向にコピー(B列=2, C列=3, D列=4…)
=COLUMN()-COLUMN($A$1)

' B1: COLUMN()=2, COLUMN($A$1)=1 → 1
' C1: COLUMN()=3, COLUMN($A$1)=1 → 2
' D1: COLUMN()=4, COLUMN($A$1)=1 → 3

月名を自動生成する応用パターン(DATE・TEXT関数との組み合わせ)

' B1セルに入力し右方向にコピー
' → 「1月」「2月」「3月」…と月名を自動生成
=TEXT(DATE(2026, COLUMN()-COLUMN($A$1), 1), "m月")

列を追加しても自動的に月名が続くため、12か月の報告書フォームを素早く構築できます。

実務パターン4:INDEXとROW・COLUMNの連携

INDEX関数の行番号・列番号引数にROW/COLUMNを渡すと、動的に参照位置をずらす仕組みが作れます。テーブル全体を別シートに転写したり、特定のセルパターンを抽出したりする場合に有効です。

' マスタ表(Sheet1)のデータを別シート(Sheet2)のA1セルから転写する
' Sheet2のA1に入力し、右・下方向にコピー
=INDEX(Sheet1!$A$1:$F$20, ROW(), COLUMN())

Sheet2のA1にこの式を入れると、Sheet1のA1の値を参照します。B1なら列番号が2になりSheet1のB1を参照、A2なら行番号が2になりSheet1のA2を参照します。シート間のデータミラーリングに使える基本パターンです。

オフセットを加えて開始位置をずらすパターン

' Sheet2のA1から貼り付け開始、マスタ表のB3(行3・列2)からデータを取る
=INDEX(Sheet1!$A$1:$Z$100, ROW()+2, COLUMN()+1)

実務パターン5:ROWS・COLUMNSをOFFSETの高さ・幅に使う

OFFSET関数の「高さ」「幅」引数にROWS/COLUMNSを渡すと、データ量に応じて自動的にサイズが変わる動的範囲が作れます。

' A列のデータが入っている行数を自動的に高さとして使う
=OFFSET($A$1, 0, 0, ROWS($A$1:$A$100), 1)

' 実務では COUNTA で実際のデータ件数を取得して使う
=OFFSET($A$1, 0, 0, COUNTA($A:$A), 1)

テーブルの列数を動的に確認する

' 名前付き範囲「マスタ表」の列数を調べる
=COLUMNS(マスタ表)

' 結果を使って横幅を自動設定する例
=OFFSET($A$1, 0, 0, COUNTA($A:$A), COLUMNS($A$1:$F$1))

ROWS・COLUMNSは「特定の範囲が今何行・何列あるか」を調べる用途にも使えます。VBAを使わずにデータの実際のサイズを把握したい場合に便利です。

行を挿入したときの動作確認と注意点

ROW・COLUMN系関数を使う際に注意が必要な点をまとめます。

注意点内容対処法
ROW()と行挿入ROW()は常に現在の行番号を返すため、行を挿入すると連番が自動更新される。これは意図した動作だが、意図しないズレになる場合もある固定連番が必要な場合は手入力または値貼り付けに切り替える
ROW(範囲)の配列返却=ROW(A1:A5)は{1;2;3;4;5}の配列を返す。通常セルでは最初の値のみ表示される配列全体を使う場合はスピル(365)かCtrl+Shift+Enter(旧形式)で入力する
ROWS vs COUNTA=ROWS(A1:A10)は常に10を返す(空白セルを含む)。データ件数ならCOUNTA、定義済み範囲のサイズならROWSと使い分ける目的に応じてROWS/COUNTAを選択する
列番号とアルファベット変換COLUMN()は数値を返す。「A」「B」などアルファベットの列名が必要な場合はそのままでは使えない=SUBSTITUTE(ADDRESS(1,COLUMN(),4),1,””)でアルファベット列名に変換できる

数式の可読性を高めるためのベストプラクティス

ROW・COLUMNを他の関数と組み合わせる場合、数式が複雑になりやすいため可読性への配慮が重要です。

名前付き範囲と組み合わせる

' "ヘッダー行"という名前をA1セルに付けた場合
=ROW()-ROW(ヘッダー行)

' 数式の意図が明確になる

LET関数と組み合わせる(Excel 365)

' ROWのオフセットを変数として定義し、数式の見通しをよくする
=LET(
  基準行, ROW($A$1),
  現在行, ROW(),
  現在行 - 基準行
)

MOS Excel試験でのROW・COLUMN系関数の出題ポイント

MOS Excel 365&2019では、ROW・COLUMN系関数は「数式と関数の使用」と「データのグラフ化と分析」スキル項目に関連して出題されます。単体での出題は少なく、条件付き書式やINDEXとの複合問題として問われるケースが多い傾向があります。

  • ROW関数の引数省略:引数なしのROW()は「関数が入力されているセルの行番号」を返すことを理解する
  • ROW()-ROW($A$1)パターン:行挿入・削除に強い連番生成の定番式を正確に入力できる
  • MOD+ROWの条件付き書式:=MOD(ROW(),2)=0を条件付き書式の数式として入力し縞模様を設定できる
  • ROWとCOLUMNの違い:行番号・列番号のどちらを返すかを区別して使い分けられる
  • ROWSとCOLUMNSの返す値:ROWS/COLUMNSは「範囲の行数・列数」を返すことを理解する

MOS試験 ROW・COLUMN系関数チェックリスト

確認ポイント操作内容難易度
ROW()の基本動作引数なしのROW()が現在のセルの行番号を返すことを確認できる★☆☆
ROW(参照)の動作=ROW(A1)が1を返し、=ROW(B10)が10を返すことを確認できる★☆☆
COLUMN()の基本動作引数なしのCOLUMN()が現在の列番号を返すことを確認できる★☆☆
行崩れしない連番の作成=ROW()-ROW($A$1)式を入力し行挿入後も連番が更新されることを確認する★★☆
条件付き書式での縞模様=MOD(ROW(),2)=0を条件付き書式の数式として入力し偶数行に背景色を設定できる★★☆
ROWSとROWの区別=ROWS(A1:A5)が5を返し、=ROW(A5)が5を返す違い(サイズvs位置)を説明できる★★☆
INDEXとのROW連携=INDEX(範囲, ROW(), COLUMN())がどのセルの値を返すかを説明できる★★★

まとめ:ROW・COLUMNは「動的な座標」として活用する

本記事のポイントをまとめます。

  • ROW()は現在の行番号を返す:引数省略で数式が入っているセルの行番号を返す。行を挿入・削除しても常に正しい行番号を返すため、連番生成の基盤として使われる
  • COLUMN()は現在の列番号を返す:列Aが1、列Bが2…とアルファベットではなく数値で返す。横方向の連番・月名生成に活用できる
  • ROW()-ROW($A$1)が連番の定番:ヘッダー行の直下に入力し下方向にコピーするだけで、行挿入・削除に強い連番が完成する
  • MOD+ROWで縞模様:条件付き書式の数式に=MOD(ROW(),2)=0を使うと、偶数行・奇数行で背景色を交互に設定できる
  • ROWS/COLUMNSは「範囲のサイズ」を返す:ROW/COLUMNが「位置(座標)」を返すのに対して、ROWS/COLUMNSは「大きさ(サイズ)」を返す。OFFSETの高さ・幅引数に組み合わせると動的範囲が作れる
  • INDEXとの組み合わせが強力:INDEX(範囲, ROW(), COLUMN())で、数式が入力されているセルの座標をそのまま範囲内の参照位置として使える

ROW・COLUMN関数は単体では地味な存在ですが、MOD・INDEX・OFFSET・LET・条件付き書式などと組み合わせることで、手作業では実現しにくい動的な仕組みが構築できます。MOS試験でも条件付き書式との組み合わせパターンが出題されますので、実際のExcelでMOD+ROWの縞模様や連番生成を手を動かして確認しておくことをお勧めします。

PR

できるExcel関数 Copilot対応

ROW・COLUMN・ROWS・COLUMNSをはじめ、INDEX・OFFSET・条件付き書式との組み合わせまで豊富なサンプルで解説。MOS試験頻出の関数複合パターンを体系的に学べる実践ガイドです。

PR

たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】

連番の自動生成・縞模様の条件付き書式・動的参照など、ROW・COLUMN関数の活用シーンに直結した業務自動化テクニックを多数収録。手作業を仕組みで置き換えるExcel設計思想が身につく一冊です。

Excel・MOS対策の無料相談はこちら

「ROW・COLUMN関数の使い方で迷っている」「MOS Excel試験の効率的な勉強法を相談したい」という方は、お問い合わせフォームからお気軽にご連絡ください。Excel・Word・Access・PowerPointのMOS対策から実務活用まで、現役インストラクターが個別にサポートします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次