
Googleスプレッドシートで、入力された最終行の「行番号」や「値」を取得する方法をご紹介します。 基本となるROW関数の使い方から、途中に空白セルが含まれる場合や、データ型に合わせた最適な最終行取得の数式までを解説しているので、ぜひ参考にしてみてください。
ROW関数の基本

ROW関数は、指定した「セル参照」の行番号を返します。
次のように引数を省略すると、ROW関数を入力したセルの行番号を返します。
例:=ROW()
ROW関数の引数:([セル参照])
【 複数のセル参照時の挙動】
引数に範囲(例:A1:C5)を指定した場合、範囲の最初のセル(例:A1)の行番号を返します。
例:=ROW(A1:C5) → 結果は 1
※ただし、後で解説するARRAYFORMULA関数と組み合わせることで、参照範囲のすべてのセルの行番号を配列として返すという使い方が可能になります。
最終行の「行番号」を取得する
途中に空白を含まない場合

連続するデータの一番下の行番号を取得したい場合、次のような数式を入力します。
例:=COUNTA(A:A)
【数式の解説】
- COUNTA関数は、指定した範囲に含まれるデータの個数を返します。A1からデータが連続していれば、この個数が最終行の行番号と一致します。
COUNTA関数の引数:(値1, [値2, …])
途中に空白を含む場合

空白セルを含むデータの一番下の行番号を取得したい場合、次のような数式を入力します。
例:=ArrayFormula(MAX(IF(A:A<>"",ROW(A:A))))
【数式の解説】
- IF関数は、
A:A<>""(A列が空白ではない)が成立した場合に、各A列の行番号(例:1、2、4)を返します。 - ArrayFormula関数は、IF関数がA列全体の各行に対して処理を行い、複数の行番号を返す配列数式として機能するようにします。
- MAX関数は、IF関数が返した行番号から、最も大きい値(例:4)を抽出します。
ArrayFormul関数の基本的な解説は、「ARRAYFORMULA関数とは?使い方を徹底解説」の記事をご覧ください。
最終行の「値」を取得する
INDEX関数を使う(初心者向け)

最終行の値を抽出したい場合、「最終行の行番号を取得する」セクションで取得した行番号を、INDEX関数の「行」の引数に指定します。
例:=INDEX(A:A,C2)
【数式の解説】
- INDEX関数は、指定した「範囲」から指定した「行」の位置の値を返します。
INDEX関数の引数:(参照, [行], [列])
【一連の処理を1つの数式で記述する】
計算セルを分けずに1つの数式で記述したい場合、INDEX関数の「行」の引数に、行番号を取得する数式を直接当てはめます。
例:=INDEX(A:A,ArrayFormula(MAX(IF(A:A<>"",ROW(A:A)))))
INDEX関数の基本的な解説は「INDEXとMATCHを分かりやすく解説」の記事をご覧ください。
LOOKUP関数を使う(上級者向け)

LOOKUP関数を使うと、最終行を取得する工程を飛ばして、最終行の値を取得できます。
例:=ArrayFormula(LOOKUP(2,1/(A:A<>""),A:A))
【数式の解説】
- 検索範囲(1/A:A<>””):A列の各セルが空白でないかどうかを判定し、その結果で「1」を割ります。(TRUE→1、FALSE→DIV/0!エラー)
- 検索値(2):LOOKUP関数は、検索範囲の最大値(
1)よりも大きい2を探すため、配列の末尾から最後に存在する1の位置を検索します。 - 結果の範囲(A:A):最後の
1の位置(=最後のデータのある行)に対応するA列の値を取り出し、最終的な結果として返します。
LOOKUP関数の引数:(検索値, 検索範囲, [結果の範囲])
【数値のみのデータの場合】
データが数値のみの場合、次のように、数式をよりシンプルに記述することもできます。
例:=LOOKUP(10^10,A:A)