Excel VBAでデータを最終行の下に積み上げてコピーする
実務では、毎月や毎日のデータを「過去のデータの下に追加したい」という場面がよくあります。
例えば、売上データや勤怠データを1つの一覧表にまとめる場合、すでに入力されているデータの続きに貼り付ける必要があります。
毎回貼り付け位置を目で確認していては、時間がかかるだけでなく、貼り付け位置を間違える原因にもなります。
そこで今回は、VBAでデータを最終行の下へ自動で追加する「積み上げコピペ」の方法を、実務でそのまま使えるコードとあわせて詳しくご紹介します。
ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!
💡練習用ファイルを使う前の準備
- ファイルをダウンロードして開く
- マクロ有効ブック(.xlsm)形式で保存し直す
最終行の下へ積み上げてコピーする(基本の書き方)
積み上げコピペを行うには、まず貼り付け先とコピー元、それぞれの最終行を取得します。
貼り付け先は、最終行の1行下を貼り付け位置として指定します。
この考え方を覚えておけば、毎月・毎日のデータを自動で一覧表へ追加できるようになります。

最終行取得のスニペットは【こちら】
最終行の下へ積み上げるコード
Sub Copy()
Dim LastRow1 As Long, LastRow2 As Long
LastRow1 = Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, 1).End(xlUp).Row
LastRow2 = Worksheets("Sheet2").Cells(Worksheets("Sheet2").Rows.Count, 1).End(xlUp).Row
Worksheets("Sheet2").Range("A2:A" & LastRow2).Copy _
Worksheets("Sheet1").Range("A" & LastRow1 + 1)
End Subコードの解説
では、上から順番にコードを見ていきましょう。
最初の
Dim LastRow1 As Long, LastRow2 As Long
では、Sheet1とSheet2の最終行を保存するための変数を用意しています。

同じデータ型なら1行で宣言できます
「Dim LastRow1 As Long, LastRow2 As Long」のように、どちらも同じ型(今回は、どちらもLong型)の場合は1行にまとめて宣言できます。
もちろん
Dim LastRow1 As Long
Dim LastRow2 As Long
のように別々に書いても問題ありません。
続いて
LastRow1 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
LastRow2 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
で、それぞれのシートのA列にある最終行を取得しています。
- LastRow1 … Sheet1(貼り付け先)の最終行
- LastRow2 … Sheet2(コピー元)の最終行
という役割です。
最後に実際のコピー処理を行います。
Worksheets("Sheet2").Range("A2:A" & LastRow2).Copy _
Worksheets("Sheet1").Range("A" & LastRow1 + 1)

コードが長いときは改行できます
VBAでは、1行が長くなる場合は、半角スペースの後ろに「_」 を付けることで次の行へ続けて書けます。
Worksheets("Sheet2").Range("A2:A" & LastRow2).Copy _
Worksheets("Sheet1").Range("A" & LastRow1 + 1)
これは見やすくするための書き方で、1行で書いた場合と処理内容は同じです。
コピー元の範囲は、
Range("A2:A" & LastRow2)
です。
“A2:A”という文字列と、最終行が入ったLastRow2を&でつなげることで
- LastRow2 = 3 の場合 → A2:A3
- LastRow2 = 100 の場合 → A2:A100
のように、データ量に合わせたコピー範囲が自動で作られます。
貼り付け先は
Range("A" & LastRow1 + 1)
です。
「LastRow1 + 1」としているため、Sheet1の最終行の1つ下のセルが貼り付け先になります。
例えば、Sheet1の最終行が4行目なら貼り付け先はA5セルとなり、既存のデータの下へ積み上げるようにコピーされます。
まとめ
今回は、Excel VBAでデータを最終行の下へ自動で追加する「積み上げコピペ」の方法をご紹介しました。
実務では、毎月・毎日増えていくデータを一覧表へまとめる機会が多くあります。貼り付け位置を毎回指定するのではなく、最終行を取得してその1行下へ貼り付けるようにすれば、データ量が変わっても自動で処理できるようになります。
今回ご紹介した
- 最終行を取得する
- LastRow + 1 を貼り付け先に指定する
この2つの考え方は、ほかのマクロでも繰り返し登場する基本テクニックです。
まずは練習用ファイルを使って、Sheet2のデータを増減させながら、Sheet1へ正しく積み上げてコピーされる様子を実際に試してみてくださいね。




