【Excel VBA】最終行を取得する一番かんたんな方法|初心者向けにやさしく解説

VBA & Excel
スポンサーリンク
スポンサーリンク

はじめに

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
decopon

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

moco
moco

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

コメント

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