「このセルって何行目だっけ?」と確認したいとき、ありますよね。行番号を手入力すると、行を挿入・削除するたびにズレてしまいます。ROW関数を使えば、行番号を自動で取得できるので手直しの手間がなくなりますよ。
この記事では、ROW関数の基本的な書き方から連番の作成、他の関数との組み合わせパターンまでまとめて紹介します。
ROW関数とは?
ROW関数(読み方: ロウ)は、指定したセルの行番号を数値で返す関数です。「ROW」は英語で「行」を意味します。
たとえばセルA5にROW関数を入れると、結果は 5 になります。引数を省略すると、関数が入力されているセル自身の行番号を返します。
単体で使う場面は限られますが、連番の作成や他の関数との組み合わせで真価を発揮します。
NOTE
ROW関数はExcel 2007以降のすべてのバージョンで使用できます。Googleスプレッドシートでも同じ構文で利用可能です。
ROW関数の書き方
基本構文
=ROW([参照])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 参照 | 省略可 | 行番号を調べたいセルまたはセル範囲を指定します。省略すると、ROW関数が入力されているセル自身の行番号を返します |
引数はセル参照のみ有効です。数値や文字列を直接指定するとエラーになります。
ROW関数の基本的な使い方
引数を省略して使う
=ROW()
ROW関数が入力されているセルの行番号を返します。A1セルに入力すれば 1、B10セルに入力すれば 10 です。
セル参照を指定して使う
=ROW(C15)
セルC15の行番号 15 を返します。どのセルに入力しても結果は 15 です。
セル範囲を指定して使う
=ROW(B3:B7)
範囲の先頭行の行番号 3 を返します。範囲を指定した場合、単一セルに入力すると先頭行の番号だけが表示されます。
TIP
Microsoft 365やExcel 2021では、範囲を指定するとスピル機能で
{3;4;5;6;7}と複数の行番号が縦に展開されます。Excel 2019以前では配列数式(Ctrl+Shift+Enter)が必要です。
ROW関数の実務活用パターン
パターン1: 途中で行を挿入しても崩れない連番
データ一覧に通し番号を振りたいとき、手入力だと行を挿入するたびに番号がズレます。ROW関数で自動連番を作りましょう。
=ROW()-1
データが2行目から始まる場合、見出し行の分だけ引き算します。2行目のセルに入れると 1、3行目なら 2 です。行を途中に挿入しても番号が自動で振り直されます。
データが5行目から始まるなら =ROW()-4 のように調整してください。
パターン2: 見出し行を基準にした動的な連番
開始行が変わっても修正不要な連番を作る方法です。
=ROW()-ROW($A$1)
$A$1 を見出しセルに固定しておけば、見出し行が何行目にあっても正しい連番が振られます。表を別の位置に移動しても修正の手間がありません。
パターン3: INDIRECT関数と組み合わせて動的にセルを参照
ROW関数の結果を使って、参照先のセルを動的に切り替えられます。
=INDIRECT("B"&ROW())
このように書くと、3行目では B3、4行目では B4 の値を返します。シート間の参照を組み立てたいときに便利です。
パターン4: SMALL+IF配列数式で条件に合うN番目を抽出
特定の条件に合うデータだけを取り出す配列数式です。ROW関数が行番号の配列を生成する役割を担います。
=INDEX($B$2:$B$100,SMALL(IF($A$2:$A$100="東京",ROW($A$2:$A$100)-ROW($A$2)+1),ROW(A1)))
A列が「東京」のデータをB列から順番に抽出します。ROW($A$2:$A$100)-ROW($A$2)+1 で1から始まる連番配列を作り、条件に合う行だけをSMALL関数で取り出しています。
NOTE
Excel 2019以前ではCtrl+Shift+Enterで配列数式として確定してください。Microsoft 365ではFILTER関数のほうがシンプルに書けます。
パターン5: OFFSET関数と組み合わせて可変範囲を作る
ROW関数の値でOFFSET関数の移動量を動的に変えられます。
=OFFSET($A$1,ROW()-1,0)
1行目から順にA1、A2、A3…の値を返します。データの参照先を行番号に連動させたいときに使えるパターンです。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | 引数に文字列や数値を直接指定した(例: =ROW("A1")) | セル参照を指定してください。文字列ではなく =ROW(A1) と書きます |
#REF! | 参照先の行が削除された | 参照先セルが存在するか確認してください |
| 連番がズレる | ROW関数の引き算の値が開始行と合っていない | =ROW()-ROW(見出しセル) のパターンに書き換えると安全です |
| 配列が展開されない | Excel 2019以前でスピル機能が使えない | Ctrl+Shift+Enterで配列数式として確定してください |
似た関数との違い・使い分け
| 関数 | 戻り値 | 引数の対象 | 用途 |
|---|---|---|---|
| ROW | 行番号(数値) | セルの位置 | 連番作成、行番号の取得 |
| COLUMN | 列番号(数値) | セルの位置 | VLOOKUP列番号の自動化 |
| ROWS | 行数(数値) | セル範囲のサイズ | 範囲の行数カウント |
| COLUMNS | 列数(数値) | セル範囲のサイズ | 範囲の列数カウント |
ROW関数はセルが「何行目にあるか」を返します。一方、ROWS関数は範囲が「何行分あるか」を返します。混同しやすいので注意してください。
ROW関数とCOLUMN関数はペアの関数です。ROW関数が行番号を返すのに対し、COLUMN関数は列番号を返します。VLOOKUPの第3引数に =COLUMN()-1 を使って列番号を自動化するパターンはCOLUMN関数の定番の使い方です。
まとめ
ROW関数は行番号を取得するシンプルな関数です。連番の作成やINDIRECT・SMALL・OFFSETとの組み合わせで幅広く活用できます。
- 引数を省略すると、入力セル自身の行番号を返す
=ROW()-ROW(見出しセル)で崩れない連番が作れる- SMALL+IF配列数式の行番号配列としても活躍する
- ペア関数のCOLUMN関数もあわせて覚えておくと便利
