「この表って何行あるんだろう?」と数えたくなること、ありますよね。
手動で数えると行数が多いときにミスしがちです。データが増減するたびに数え直すのも面倒ですよね。
スプレッドシートのROWS関数を使えば、セル範囲の行数を一発で自動カウントできます。他の関数と組み合わせれば、最終行のデータ取得や可変範囲の作成にも活用できますよ。
この記事では、ROWS関数の基本的な書き方から、実務で使える組み合わせパターンまで紹介します。
スプレッドシートのROWS関数とは?基本の仕組みを理解しよう
ROWS関数(読み方: ロウズ関数)は、指定したセル範囲の行数を数値で返す関数です。「ROWS」は英語の「ROW(行)」の複数形で、行がいくつあるかを意味します。
たとえば =ROWS(A1:A5) と入力すると、結果は「5」です。A1からA5まで5行分あるからですね。
ROWS関数にできることをまとめると、次のとおりです。
- セル範囲の行数を数値で返す
- 列方向にどれだけ広がっていても、行数だけをカウントする
- 名前付き範囲や配列定数にも使える
- 他の関数と組み合わせて動的な範囲制御に使える
ROWS関数の基本構文
=ROWS(範囲)
カッコの中に、行数を調べたい範囲を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 範囲 | 必須 | 行数を調べたいセル範囲。セル参照、名前付き範囲、配列定数のいずれも指定できる |
引数は1つだけなので覚えやすい関数です。ただし、ROW関数と違って引数の省略はできません。=ROWS() と書くとエラーになるので注意してください。
ROW関数との違いを押さえよう
ROWS関数とROW関数は名前がよく似ていますが、返す情報がまったく異なります。
=ROW(A3) → 3(A3セルの行番号)
=ROWS(A3:A10) → 8(A3からA10の行数)
- ROW関数: セルが「何行目にあるか」を返す(位置の情報)
- ROWS関数: 範囲に「何行あるか」を返す(サイズの情報)
覚え方は「複数形のROWSは範囲全体の行数を数える」と考えるとわかりやすいですよ。
NOTE
ROWS関数はGoogleスプレッドシートの全バージョンで使えます。Excelでもまったく同じ構文で動作します。
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: INDEX関数と組み合わせて最終行のデータを取得
データ範囲の最後の値を取り出したいときに便利なパターンです。
=INDEX(A2:A100, ROWS(A2:A100))
ROWS関数で範囲の行数(99)を取得し、INDEX関数の行番号に渡しています。範囲の最後の行、つまりA100の値を返します。
データが途中までしか入っていない場合は、COUNTA関数と組み合わせるとさらに正確です。
=INDEX(A2:A100, COUNTA(A2:A100))
COUNTA関数でデータが入っているセルの数を数え、その位置のデータを取得する流れです。
パターン2: OFFSET関数と組み合わせて可変範囲を作る
OFFSET関数の「高さ」引数にROWS関数を使うと、範囲のサイズを動的に制御できます。
=OFFSET(A1, 0, 0, ROWS(A1:A10), 1)
ROWS関数が返す行数に応じて、OFFSET関数が返す範囲の高さが変わります。グラフの参照範囲やデータ入力規則の元データを可変にしたいときに活躍するパターンです。
パターン3: INDIRECT関数と組み合わせて動的な範囲サイズを取得
文字列で組み立てた範囲の行数を調べたいときに使えます。
=ROWS(INDIRECT("A1:A" & B1))
セルB1に入力された数値に応じて範囲のサイズが変わります。B1が「20」なら =ROWS(A1:A20) と同じ結果です。ユーザーが行数を指定して範囲を制御する仕組みを作りたいときに便利ですよ。
INDIRECT関数の詳しい使い方は関連記事を参考にしてみてください。
パターン4: データ件数の検証に使う
想定どおりのデータ件数があるかチェックする数式です。
=IF(ROWS(A2:A100) = COUNTA(A2:A100), "OK", "空白セルあり")
ROWS関数で範囲の行数を調べ、COUNTA関数でデータが入っているセルの数を比較しています。空白行が混ざっていると数が合わなくなるので、データの欠損チェックに使えます。
パターン5: COLUMNS関数と組み合わせて総セル数を計算
ROWS関数とCOLUMNS関数を掛け合わせると、データ範囲の総セル数がわかります。
=ROWS(A1:G10) * COLUMNS(A1:G10)
この数式は 10 * 7 = 70 を返します。想定どおりのデータサイズか確認したいときに使えるパターンです。
TIP
ROWS関数は「範囲の行数」を返すだけのシンプルな関数です。単体よりも、INDEX・OFFSET・INDIRECTなど他の関数と組み合わせてこそ真価を発揮します。
ROW関数との違い・使い分け
ROWS関数とROW関数は名前が似ていますが、役割がまったく異なります。混同しやすいポイントを整理しておきましょう。
比較表
| 項目 | ROWS関数 | ROW関数 |
|---|---|---|
| 返す値 | 範囲の行数(サイズ) | セルの行番号(位置) |
| 引数 | セル範囲(必須) | セル参照(省略可) |
| 構文 | =ROWS(A1:A10) | =ROW(A1) |
| 結果の例 | =ROWS(A3:A10) → 8 | =ROW(A3) → 3 |
| 主な用途 | 範囲サイズの取得、動的範囲の制御 | 連番作成、動的な行参照 |
| 引数省略 | 不可(エラーになる) | 可(自分のセルの行番号を返す) |
使い分けのポイントはシンプルです。
- 「この範囲は何行あるか」を知りたい → ROWS関数
- 「このセルは何行目か」を知りたい → ROW関数
ROW関数の詳しい使い方は「スプレッドシートのROW関数の使い方」で解説しています。
COLUMNS関数との比較
ROWS関数とCOLUMNS関数は、行と列の方向が違うだけの対称ペアです。
| 項目 | ROWS関数 | COLUMNS関数 |
|---|---|---|
| 返す値 | 範囲の行数 | 範囲の列数 |
| 構文 | =ROWS(範囲) | =COLUMNS(範囲) |
| 結果の例 | =ROWS(A1:C10) → 10 | =COLUMNS(A1:C10) → 3 |
| 方向 | 縦方向のサイズ | 横方向のサイズ |
構文も =ROWS(範囲) と =COLUMNS(範囲) でまったく同じ形です。セットで覚えてしまいましょう。
また、COLUMN関数は「何列目か」を返す関数です。4つの関数の関係を整理すると次のようになります。
| 位置(1つのセル) | サイズ(範囲) | |
|---|---|---|
| 行(縦) | ROW関数 | ROWS関数 |
| 列(横) | COLUMN関数 | COLUMNS関数 |
この4つの関係を押さえておけば、「行番号? 行数? 列番号? 列数?」で迷うことがなくなりますよ。
よくあるエラーと対処法
ROWS関数自体は非常にシンプルなので、単独でエラーになることはほとんどありません。ただし、いくつか注意点があります。
| エラー | 原因 | 対処法 |
|---|---|---|
| 引数なしでエラー | =ROWS() と引数を省略した | ROWS関数は引数が必須です。行数を調べたい範囲を指定してください |
#REF! | 参照先の行や列が削除された | 参照先セルが存在するか確認してください |
#NAME? | 名前付き範囲のスペルミス | 「データ」>「名前付き範囲」から名前を確認してください |
| 期待と違う数値が返る | 行数ではなく行番号を求めていた | 行番号がほしい場合はROW関数を使ってください |
特に注意したいのが「引数省略」のケースです。ROW関数は =ROW() と引数なしで使えますが、ROWS関数は必ず範囲を指定する必要があります。
TIP
「期待と違う数値が返る」場合は、ROWS関数とROW関数を混同していることがほとんどです。ROWS関数は範囲の「サイズ」、ROW関数はセルの「位置」を返します。
=ROWS(A3:A10)は「8」、=ROW(A3)は「3」です。
まとめ
ROWS関数は、セル範囲の行数を取得するシンプルな関数です。他の関数と組み合わせることで、最終行データの取得や動的な範囲制御に活用できます。
この記事のポイントをおさらいしておきましょう。
- ROWS関数は
=ROWS(範囲)で、範囲の行数を数値で返す(引数の省略は不可) - ROW関数は「何行目か(位置)」、ROWS関数は「何行あるか(サイズ)」を返す
- INDEX関数と組み合わせれば、最終行のデータを簡単に取得できる
- OFFSET関数と組み合わせれば、動的に伸縮する範囲を作れる
- COLUMNS関数とは行・列の方向が違うだけの対称ペア
まずは =ROWS(A1:A10) のシンプルな使い方から試してみてください。INDEX関数やOFFSET関数との組み合わせを覚えれば、データ管理がグッとラクになりますよ。
