はじめに
Excelでデータを扱っていると、「どこまでデータが入っているのか」を知りたい場面がよくあります。
行数が毎回変わる表を扱うときは、最終行を自動で取得できると作業がとても楽になります。
この記事では、VBAで最終行を取得する基本のコードと、そのしくみをやさしく解説します。
まずはコードを確認
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
A列を基準に、データが入っている一番下の行番号を取得するコードです。
コードのしくみを解説
どこを見て最終行を判断しているのか
このコードは A列(1列目) を基準にしています。
- Rows.Count
Excelの最終行番号(Excelでは 1,048,576 行)
- Cells(Rows.Count, 1)
A列の一番下のセル
- .End(xlUp)
下から上に向かってデータがあるセルまでジャンプ
- .Row
見つかったセルの行番号を取得
つまり、
A列の一番下から上に向かってデータを探し、最初に見つかった行番号を返す
という動きです。
どんな場面で使うのか
- データの最終行に値を追加したいとき
- データ範囲を自動で指定したいとき
- 行数が変わる表を扱うとき
VBAでの自動化では、ほぼ必須のテクニックです。
あわせて知っておきたいポイント
別の列を基準にしたい場合
B列なら「2」、C列なら「3」に変更します。
lastRow = Cells(Rows.Count, 2).End(xlUp).Row 'B列
シートを指定したい場合
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("データ")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
最終列を取得したい場合
Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
使うときに気をつけたいこと
- 空白が多い列を基準にすると正しく取得できないことがあります
→ もっとも確実にデータが入っている列を基準にしましょう。
- 途中に空白行があっても問題ありません
.End(xlUp) は「一番下から探す」ため、途中の空白は無視されます。
- 結合セルがある列は避けたほうが安全です
行番号の判定がずれることがあります。
まとめ
- 最終行の取得は、VBAの基本であり実務でもよく使う
- A列の一番下から上に向かって探す方法がもっともシンプル
- 列やシートを変えるだけで応用も簡単
最終行を正しく取得できると、VBAの自動化がぐっと扱いやすくなります。

decopon
最終行の取得は、VBAの中でも「まず覚えておくと便利な基本」です。
この記事が、あなたのExcel作業を少しでもスムーズにするきっかけになればうれしいです。

moco
どこまでデータがあるか探すのは、VBAに任せてしまうのがいちばん。
人は、もっと大事なところに時間を使いたいよね。

コメント