今回はデータが入っている最終行を取得する方法を紹介したいと思います。
データが入っている最終行を取得する方法
それでは早速コードを紹介します。
適当なシートのA列の適当な行に何らかのデータを入れて実行してみてください。
Sub test_LastRow()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox lastRow
End Sub
実行するとA列で一番最後にデータが入っている行を表示します。
今回の例だと一番最後にデータが入っているのが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キー+↓矢印キーを押すと最終行まで移動するのが分かるかと思います。
まぁRows.Countが出たら「最終行のことなんだな~」くらいに覚えておけばOKです。
任意の方向に移動
次に任意の方向に移動する処理についてです。
'任意の方向に移動
.End(xlUp)
これは指定したセル位置から任意の方向にデータがあるところまで移動する処理になります。
方向を指定するには.Endの後ろのカッコ内で任意の方向を指定する必要があります。
今回の例で言うと.End(xlUp)としているので上方向に移動する、という感じです。
移動後のセル位置を取得
最後に移動後のセル位置を取得する処理についてです。
'移動後のセル位置を取得
.Row
これは指定したセルの行数を返します。
例えばRange(“A1”)なら1を返し、Cells(3,1)なら3を返す、みたいな感じです。
今回の場合はRows.Count(=最終行)から上方向にデータがあるところまで移動し、止まったところの行を取得する、といった挙動になります。
動作のまとめ
例として以下のシートを使って動作について説明します。
A1~A11までデータが入力されており、それより下には何も入っていない状態です。
まずCells(Rows.Count, 1)
で最終行を指定します。
次に.End(xlUp)
で上方向にデータがあるところまで移動します。
今回の例だと最初に見つかるセルがA11なので、A11で止まります。
最後に.Row
で現在地の行を取得して終わりです。
最終的にA11セルに移動する為、11が取得できます。
まとめ
今回はデータが入っている最終行を取得する方法を紹介しました。
汎用性が高く様々な場面で使えるコードなので、是非覚えておきましょう!
また、このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント