Excel関数 逆引き集 | 行数を取得 → ROWS

Excel
スポンサーリンク

概要

ROWSは「範囲に含まれる行の“個数”」を返す関数です。例えばA2:A10なら9、B2:D5なら4。行番号を返すROWとは役割が異なり、「何行あるか」を知りたいときに使います。縦方向の連番生成、最後の行位置の算出、スピル(動的配列)の縦幅取得、入力検証などで役立ちます。


基本の使い方

書式

=ROWS(範囲)

範囲に含まれる行数を返します。セル1つなら1、A2:A10なら9です。

=ROWS(A1)         // 1
=ROWS(A2:A10)     // 9
=ROWS(B2:D5)      // 4
=ROWS(A2:A2#)     // スピル範囲の縦幅(Microsoft 365)

具体例

範囲の縦幅を取得して可変ロジックに

=ROWS(A2:A100)

データ件数を自動で数え、レポートや集計の繰り返し処理を動的に設計できます。

最後の行インデックス(相対位置)を求める

開始行が2行目で範囲A2:A10なら、最後の行までの相対位置は9。

=ROWS(A2:A10)   // 9

あるいは行番号の差から求める場合:

=ROW(A10)-ROW(A2)+1   // 9

スピル(動的配列)の縦幅を取得

動的に出力される範囲の行数を取りたいときは、スピル参照「#」が便利です。

=ROWS(D2#)

D2からスピルした配列の“現在の縦幅”を返します。


応用テンプレート

縦方向に1,2,3…を自動生成(範囲高さに合わせる)

開始セルH2に、指定範囲の行数だけ連番を出したい例(Microsoft 365):

=SEQUENCE(ROWS(A2:A10))

1列・“行数ぶん”の連番が縦に展開します。

INDEXで“最後の行”を可変取得

範囲の最後の行をINDEXで抜き出す(列はn、行は最後):

=INDEX($A$2:$A$20, ROWS($A$2:$A$20))

行数を行引数として渡すことで、範囲の下端を常に参照します。

TAKE関数と組み合わせて下端を切り出す

Microsoft 365で範囲の最後の行だけ取り出す:

=TAKE($A$2:$A$20, ROWS($A$2:$A$20))

入力検証:範囲が“十分な行数”か判定

最低5行必要な設定のチェック:

=IF(ROWS($A$2:$A$20)>=5, "OK", "行が不足")

よくあるつまずきと対策

行“番号”と行“個数”の取り違え

  • 行番号が欲しい→ROW
  • 行の個数が欲しい→ROWS
    役割が違います。設計時に混同しないように。

非連続範囲の行数を数えたい

カンマで分けた非連続参照はうまく数えられません。必要なら行ごとにROWSを合算します。

=ROWS(A2:A10)+ROWS(C2:C5)

データの有無は関係ない

ROWSは「範囲の高さ」を返すだけで、セルの中身は見ません。データ件数を数えたいならCOUNTAやBYROWと組み合わせます(Microsoft 365)。

=SUM(--(BYROW(A2:A20, LAMBDA(r, COUNTA(r)>0))))

スピル参照が使えない環境

A2# のようなスピル参照はMicrosoft 365専用です。従来版では固定範囲を渡すか、配列数式を使用します。


例題

問題1: 範囲A2:A10の行数をB2に表示してください。

解答例:

=ROWS(A2:A10)

問題2: 単一セルC5の行数(常に1)をD2に表示してください。

解答例:

=ROWS(C5)

問題3: スピル出力E2#の“縦幅”をF2に表示してください(Microsoft 365)。

解答例:

=ROWS(E2#)

問題4: 範囲A2:A20の“最後の行”をINDEXで取り、G2に表示してください(列番号は1)。

解答例:

=INDEX($A$2:$A$20, ROWS($A$2:$A$20), 1)

問題5: 範囲B2:B20が5行以上あるとき「OK」、未満なら「行が不足」とH2に表示してください。

解答例:

=IF(ROWS(B2:B20)>=5, "OK", "行が不足")

まとめ

ROWSは「範囲の縦幅(行数)」を返すシンプルな関数で、可変参照、最後の行取得、スピル高さ判定、入力検証に向いています。行番号ならROW、列数ならCOLUMNSと使い分けるのがポイント。非連続範囲は合算で対処し、Microsoft 365ではスピル参照(#)を活用すると柔軟なテンプレートが組めます。用途に合わせて“高さ”を軸にした設計に落とすと、縦コピーや行追加に強いシートになります。

タイトルとURLをコピーしました