【VBA】データ量が変わっても怖くない!「最終行を取得する」方法

【業務効率化】VBA
スポンサーリンク

「せっかくマクロを作ったのに、データの件数が変わったらうまく動かなくなった……もう嫌だ」

そんなふうに、画面の前でため息をついていませんか?

今日はVBAの「最終行の取得」についてお話しします。

どんな悩みを解決するの?

  • 日によってデータの行数(件数)が変わるため、マクロで範囲指定ができない。
  • 途中に空白行があると、そこで処理が止まってしまう。
  • 「A1:A100」のように決め打ちで書いてしまい、101件目のデータが無視される事故が怖い。

これらの悩みは、たった1行のコードで解決します。

【業務効率化】VBAの記事を見る

このコードをコピペしてください

一番下の行が何行目なのかを知るための、書き方がこちらです。

Dim lastRow As Long
' A列の最終行を取得する
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

これだけです。

なぜ「上から」ではなく「下から」なのか?

Excelのワークシートは、実はものすごく縦に長いです。

現在のExcel(.xlsx)では、最大約100万行もあります。

初心者の多くは、上(1行目)から下に向かってデータを探そうとします(End(xlDown)を使いたがります)。

でも、もしデータの途中に「入力漏れの空白セル」があったらどうなるでしょう?

そこで「あ、ここで終わりね」と勘違いして止まってしまうのです。

一方、今回紹介したCells(Rows.Count, 1).End(xlUp)は、以下のような動きをします。

  1. エレベーターで一番底(1,048,576行目)まで一気に降りる。
  2. そこから「上」を見上げる。
  3. 一番最初に見つかった「データが入っている階(セル)」で止まる。

これなら、途中に空白があっても関係ありません。確実に「一番下のデータ」を見つけることができます。

実践!明日から使えるコピペ用コード

では、実際の業務でよくある「売上データを、マスタシートの最終行の下に追加する」という作業を自動化してみましょう。

Sub CopyDataToMaster()
    Dim wsSource As Worksheet
    Dim wsMaster As Worksheet
    Dim lastRowSource As Long
    Dim lastRowMaster As Long
   
    ' シートの設定(名前は自分の環境に合わせて変えてください)
    Set wsSource = ThisWorkbook.Sheets("売上入力")
    Set wsMaster = ThisWorkbook.Sheets("売上マスタ")
   
    ' 1. コピー元(売上入力)の最終行を探す
    lastRowSource = wsSource.Cells(wsSource.Rows.Count, 1).End(xlUp).Row
   
    ' データが1件もない場合は処理を終わる
    If lastRowSource < 2 Then Exit Sub
   
    ' 2. コピー先(マスタ)の最終行を探す
    lastRowMaster = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row
   
    ' 3. データをコピーして、マスタの「最終行の1つ下」に貼り付け
    wsSource.Range("A2:C" & lastRowSource).Copy wsMaster.Cells(lastRowMaster + 1, 1)
   
    MsgBox "転記が完了しました!"
   
End Sub


今回は分かりやすくするためRangeを使いましたが、Cellsで書いたほうがスッキリします。

ポイントは「変数」を使うこと

コードの中にlastRowSourceという言葉(変数)が出てきました。

ここに「今日の最終行」という数字が自動で入ります。

  • 今日は100行目までデータがある → Range(“A2:C100“) として動く
  • 明日は5行しかない → Range(“A2:C5“) として動く

このように、Excelが勝手に空気を読んで範囲を変えてくれるようになります。使いこなせるととても便利なので、ぜひ習得してください。

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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