Googleスプレッドシートで最終行を取得するための主な方法をご紹介します。
基本的な方法(空白を含まない場合)
COUNTA関数を使用して最終行を取得できます。シンプルな方法です。
=COUNTA(A:A)
※空白行がある場合は、適宜調整が必要です。
空白を含む場合
以下の数式で、空白セルを含む列の最終行を取得できます。
=MAX(ArrayFormula(IF(A:A="","",ROW(A:A))))
- ROW(A:A)
- A列の各セルの行番号を返します
- 例:1行目なら1、2行目なら2、という具合に番号を返します
- IF(A:A=””, “”, ROW(A:A))
- A列の各セルが空白かどうかをチェックします
- 空白の場合は””(空文字)を返します
- 空白でない場合はその行番号を返します
- ArrayFormula
- 配列全体に対して計算を実行します
- 各行に対して個別に計算を行い、結果の配列を返します
- MAX
- 最後に、得られた数値の中で最大の値を返します
- つまり、データが存在する最後の行番号が得られます
最終行の実際の値を取得する(INDEX関数を使用する方法)
最終行の実際の値を取得するには以下の数式を使用します。
=INDEX(FILTER(A2:A, A2:A <> ""), COUNTA(FILTER(A2:A, A2:A <> "")))
処理の流れ:
- FILTER(A2:A, A2:A <> “”)
- 結果:[データ1, データ2, データ3, データ4]
- COUNTA(FILTER(A2:A, A2:A <> “”))
- 結果:4(空でない値の数)
- INDEX([データ1, データ2, データ3, データ4], 4)
- 結果:データ4(配列の4番目の値)
利点:
- 空白セルを無視できる
- 最終行の実際の値を取得できる
- データの追加・削除に応じて動的に更新される
間に空白行が存在する場合に、値がずれる可能性があるので注意が必要です。
INDEX関数の基本構文
=INDEX(配列, 行番号, [列番号])
主要なパラメータ
- 配列
- 参照したいデータの範囲
- 単一の行/列または2次元の配列が指定可能
- 行番号
- 取得したい行の位置を指定
- 1から始まる整数値
- 列番号 (省略可能)
- 取得したい列の位置を指定
- 1から始まる整数値
- 単一列の場合は省略可能
最終行の実際の値を取得する(より高度な方法)
空白行を含む場合でも確実に最終値を取得する方法です。
=index(A1:A,max(ArrayFormula((--(A1:A<>"")*row(A1:A)))))
内側から順に説明します。
- A1:A<>””
- A1から最終行までの範囲で、空でないセルをチェック
- TRUE/FALSEの論理値の配列を返す
- A1からスタートするため、1行目からチェック開始
- –(A1:A<>””)
- 二重マイナスで論理値を数値に変換
- TRUE → 1(データが存在する行)
- FALSE → 0(空白行)
- row(A1:A)
- 各セルの行番号を返す
- A1から始まるため、1,2,3…という数値の配列
- A2から始める場合と比べて、行番号が1ずつ小さくなる
- *(–(A1:A<>””)row(A1:A))
- 空でないセルの行番号を取得
- 空セルは0
- データがある行は、その行番号が残る
- max(ArrayFormula(…))
- 計算結果の中から最大値を取得
- データが存在する最後の行番号を特定
- index(A1:A, 最大行番号)
- その行番号の値を返す
注意点
- これらの関数は列全体を参照するため、大量のデータがある場合はパフォーマンスに影響を与える可能性があります。
- ArrayFormulaを使用する場合、シートの最大行数まで計算が行われるため、必要に応じて範囲を制限することをお勧めします。
- データの更新や追加に応じて自動的に最終行が更新されます。
まとめ
Googleスプレッドシートで最終行を取得するためには、以上のような方法があります。
ご参考ください。