【Excel VBA】データが入っている最終行を取得する方法を紹介【lastRow】

Excel
スポンサーリンク

今回はデータが入っている最終行を取得する方法を紹介したいと思います。

スポンサーリンク

データが入っている最終行を取得する方法

それでは早速コードを紹介します。
適当なシートのA列の適当な行に何らかのデータを入れて実行してみてください。

Sub test_LastRow()
    
    Dim lastRow                 As Long
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    MsgBox lastRow
    
End Sub

実行するとA列で一番最後にデータが入っている行を表示します。

コードの解説_1

今回の例だと一番最後にデータが入っているのが4行目なので、4が取得できる感じです。

スポンサーリンク

コードの解説

それではコードについてざっくり解説します。
解説するのは当然lastRowに最終行を格納する処理です。

lastRow = Cells(Rows.Count, 1).End(xlUp).Row

それぞれポイントになる所をざっくり解説していきます。

初期セル位置の指定

まず初めに初期セル位置の指定についてです。

'初期セル位置の指定
Cells(Rows.Count, 1)

ポイントになるのはRows.Countです。
Rows.Countについてざっくり説明するとシートの行数を指し、2023年8月現在Excelのシートの行数は1,048,576になります。

実際にシート上でCtrlキー+↓矢印キーを押すと最終行まで移動するのが分かるかと思います。

データが入っている最終行を取得する方法_初期セル位置の指定_1

まぁRows.Countが出たら「最終行のことなんだな~」くらいに覚えておけばOKです。

任意の方向に移動

次に任意の方向に移動する処理についてです。

'任意の方向に移動
.End(xlUp)

これは指定したセル位置から任意の方向にデータがあるところまで移動する処理になります。
方向を指定するには.Endの後ろのカッコ内で任意の方向を指定する必要があります。
今回の例で言うと.End(xlUp)としているので上方向に移動する、という感じです。

移動後のセル位置を取得

最後に移動後のセル位置を取得する処理についてです。

'移動後のセル位置を取得
.Row

これは指定したセルの行数を返します。
例えばRange(“A1”)なら1を返し、Cells(3,1)なら3を返す、みたいな感じです。

今回の場合はRows.Count(=最終行)から上方向にデータがあるところまで移動し、止まったところの行を取得する、といった挙動になります。

動作のまとめ

例として以下のシートを使って動作について説明します。
A1~A11までデータが入力されており、それより下には何も入っていない状態です。

データが入っている最終行を取得する方法_動作のまとめ_1

まずCells(Rows.Count, 1)で最終行を指定します。

データが入っている最終行を取得する方法_動作のまとめ_2

次に.End(xlUp)で上方向にデータがあるところまで移動します。
今回の例だと最初に見つかるセルがA11なので、A11で止まります。

データが入っている最終行を取得する方法_動作のまとめ_3

最後に.Rowで現在地の行を取得して終わりです。
最終的にA11セルに移動する為、11が取得できます。

スポンサーリンク

まとめ

今回はデータが入っている最終行を取得する方法を紹介しました。

汎用性が高く様々な場面で使えるコードなので、是非覚えておきましょう!

また、このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

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