「この表って何行あるんだろう?」と数えたくなること、ありますよね。手動で数えると行数が多いときにミスしがちですし、データが増減するたびに数え直すのも面倒です。ROWS関数を使えば、セル範囲の行数を一発で自動カウントできますよ。
この記事では、ROWS関数の基本的な書き方から他の関数との組み合わせパターンまでまとめて紹介します。
ROWS関数とは?
ROWS関数(読み方: ロウズ)は、指定したセル範囲の行数を数値で返す関数です。「ROWS」は英語の「ROW(行)」の複数形で、行がいくつあるかを意味します。
たとえば =ROWS(A1:A5) と入力すると、結果は 5 になります。A1からA5まで5行分あるからですね。列の範囲がどれだけ広くても、行数だけを数える点がポイントです。
NOTE
ROWS関数はExcel 2007以降のすべてのバージョンで使用できます。Googleスプレッドシートでも同じ構文で利用可能です。
ROWS関数の書き方
基本構文
=ROWS(配列)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 配列 | 必須 | 行数を調べたいセル範囲や配列を指定します。セル参照、名前付き範囲、配列定数のいずれも使えます |
引数は1つだけなので、覚えやすい関数です。ただし、ROW関数と違って引数の省略はできません。=ROWS() と書くとエラーになるので注意してください。
ROWS関数の基本的な使い方
セル範囲の行数を調べる
=ROWS(A1:A10)
A1からA10までの行数 10 を返します。列方向にどれだけ広がっていても結果は同じです。=ROWS(A1:G10) でも 10 になります。
単一セルの行数を調べる
=ROWS(B5)
単一セルは1行分なので、結果は 1 です。実務で単体で使う場面は少ないですが、数式の仕組みを理解するための基本として押さえておきましょう。
名前付き範囲の行数を調べる
=ROWS(売上データ)
名前の定義で「売上データ」と名付けた範囲の行数を返します。テーブルやデータ範囲に名前を付けている場合は、セル参照を書くよりわかりやすくなりますよ。
配列定数の行数を調べる
=ROWS({1,2,3;4,5,6;7,8,9})
配列定数の行数 3 を返します。セミコロン(;)で区切られたブロックが行に対応します。
ROWS関数の実務活用パターン
パターン1: HLOOKUP関数と組み合わせて行番号を自動化
横方向の検索テーブルでHLOOKUP関数を使うとき、行番号を手入力していませんか? ROWS関数を組み合わせると、オートフィルで行番号が自動的にずれてくれます。
=HLOOKUP(B$8,$A$1:$G$5,ROWS($A$1:A1),FALSE)
この数式を下方向にコピーすると、ROWS関数の部分が ROWS($A$1:A2)、ROWS($A$1:A3)… と変化します。行番号が 1, 2, 3… と自動で増えていくので、手入力の手間がなくなります。
TIP
同じテクニックはVLOOKUP関数でも使えます。VLOOKUPの列番号を自動化したい場合は、対になるCOLUMNS関数を使ってください。
パターン2: INDEX関数と組み合わせて最終行のデータを取得
データ範囲の最後の値を取り出したいときに便利なパターンです。
=INDEX(A2:A100,ROWS(A2:A100))
ROWS関数で範囲の行数を取得し、INDEX関数の行番号に渡しています。範囲が99行あるので、99行目(つまり最後の行)のデータを返します。
データが途中までしか入っていない場合は、COUNTA関数と組み合わせるとさらに正確です。
=INDEX(A2:A100,COUNTA(A2:A100))
パターン3: OFFSET関数と組み合わせて可変範囲を作る
OFFSET関数の「高さ」引数にROWS関数を使うと、範囲のサイズを動的に制御できます。
=OFFSET(A1,0,0,ROWS(データ範囲),1)
名前付き範囲「データ範囲」の行数に応じて、OFFSET関数が返す範囲の高さが変わります。グラフの参照範囲やドロップダウンリストの元データを可変にしたいときに活躍するパターンです。
パターン4: INDIRECT関数と組み合わせて動的な範囲サイズを取得
文字列で組み立てた範囲の行数を調べたいときに使えます。
=ROWS(INDIRECT("A1:A"&B1))
セルB1に入力された数値に応じて範囲のサイズが変わります。B1が 20 なら =ROWS(A1:A20) と同じ結果です。ユーザーが行数を入力して範囲を制御する仕組みを作りたいときに便利ですよ。
パターン5: データ件数の検証に使う
想定どおりのデータ件数があるかチェックする数式です。
=IF(ROWS(データ範囲)=COUNTA(データ範囲),"OK","空白セルあり")
ROWS関数で範囲の行数を調べ、COUNTA関数でデータが入っているセルの数を比較しています。空白行が混ざっていると数が合わなくなるので、データの欠損チェックに使えます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| 引数なしでエラー | =ROWS() と引数を省略した | ROWS関数は引数が必須です。行数を調べたい範囲を必ず指定してください |
#REF! | 参照先の行や列が削除された | 参照先セルが存在するか確認してください |
#NAME? | 名前付き範囲のスペルミス | 名前の定義を確認してください。「数式」タブの「名前の管理」から一覧を見られます |
| 期待と違う数値が返る | 行数ではなく行番号を求めていた | 行番号がほしい場合はROW関数を使ってください |
似た関数との違い・使い分け
| 関数 | 戻り値 | 引数の対象 | 用途 |
|---|---|---|---|
| ROWS | 行数(サイズ) | セル範囲 | 範囲が何行あるかを調べる |
| ROW | 行番号(位置) | セル | セルが何行目にあるかを調べる |
| COLUMNS | 列数(サイズ) | セル範囲 | 範囲が何列あるかを調べる |
| COLUMN | 列番号(位置) | セル | セルが何列目にあるかを調べる |
ROWS関数とROW関数は名前が似ていますが、役割がまったく異なります。
- ROW関数: セルの「位置」を返す。
=ROW(A3)は3(3行目にある) - ROWS関数: 範囲の「サイズ」を返す。
=ROWS(A3:A7)は5(5行分ある)
覚え方は「複数形のROWSは範囲全体の行数を数える」と考えるとわかりやすいです。
ROWS関数とCOLUMNS関数は行と列の方向が違うだけの対称ペアです。構文も =ROWS(範囲) と =COLUMNS(範囲) で同じ形なので、セットで覚えてしまいましょう。
まとめ
ROWS関数はセル範囲の行数を取得するシンプルな関数です。他の関数と組み合わせることで、行番号の自動化やデータ範囲の動的制御に活用できます。
- 構文は
=ROWS(配列)で引数は1つだけ(省略不可) - ROW関数が「位置」、ROWS関数が「サイズ」を返す
- HLOOKUP・INDEX・OFFSETなどとの組み合わせが実務で便利
- 対称ペアのCOLUMNS関数もあわせて覚えておくと効果的
