エクセルマクロで、最終行の次の行に貼り付けするVBAコードを記載しています。
このページのマクロコードは、コピペで使えます。
ぜひお試しください😉
最終行の下に貼り付け
以下のマクロを実行すると、最終行に同じデータを繰り返し貼り付けます。
Sub 最終行に貼付()
Dim lastRow As Long
Dim i As Long
' 3回繰り返す
For i = 1 To 3
' A列の最終行+1行
lastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
' 指定範囲のデータをA列の最終行に貼り付け
Range("A1:A2").Copy Range("A" & lastRow)
Next i
End Sub
マクロ実行前
マクロ実行後
A1:A2 のデータを、A列の最終行から3回繰り返しコピーします。
最終行の下に貼り付け(特定列)
以下のマクロを実行すると、特定列の最終行にデータを貼り付けます。
Sub 最終行にペースト()
Dim lastRowA As Long
Dim lastRowC As Long
' A列の最終行を取得
lastRowA = Cells(Rows.Count, "A").End(xlUp).Row
' C列の最終行を取得
lastRowC = Cells(Rows.Count, "C").End(xlUp).Row
' A列のデータをC列の次の行から貼り付け
Range("A1:A" & lastRowA).Copy Range("C" & lastRowC + 1)
End Sub
マクロ実行前
マクロ実行後
A列のデータをC列の最終行に貼り付けます。
最終行の下に貼り付け(複数列)
以下のマクロを実行すると、複数列のデータを特定列の最終行に貼り付けます。
Sub 最終行にペースト()
Dim lastRow As Long
Dim lastRowE As Long
Dim i As Long
'A~C列をループ
For i = 1 To 3
' E列の最終行を取得
lastRowE = Cells(Rows.Count, "E").End(xlUp).Row
' 各列の最終行を取得
lastRow = Cells(Rows.Count, i).End(xlUp).Row
' 各列のデータをE列の最終行の1行下に貼り付け
Range(Cells(1, i), Cells(lastRow, i)).Copy Range("E" & lastRowE + 1)
Next i
End Sub
マクロ実行前
マクロ実行後
A~C列のデータをE列の最終行に貼り付けます。
最終行の下に貼り付け(別シート)
以下のマクロを実行すると、別シートの最終行に貼り付けます。
Sub 最終行に貼り付け()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastRow1 As Long
Dim lastRow2 As Long
' シートを指定
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
' Sheet1の最終行を取得
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
' Sheet2の最終行を取得
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
' データをコピー&貼り付け
ws1.Range("A2:D" & lastRow1).Copy ws2.Range("A" & lastRow2 + 1)
End Sub
マクロ実行前
マクロ実行後
Sheet1 のA~D列のデータを、Sheet2の最終行の1行下に貼り付けます。
Sheet1 の1行目は貼り付けません。
最終行の下に貼り付け(別シート複数)
以下のマクロを実行すると、複数シートのデータを特定シートの最終行に貼り付けます。
Sub 最終行に貼付()
Dim ws As Worksheet
Dim ws4 As Worksheet
Dim lastRow As Long
Dim copyRange As Range
' Sheet4の設定
Set ws4 = ThisWorkbook.Sheets("Sheet4")
' Sheet1, Sheet2, Sheet3 のループ
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Sheet4" Then ' Sheet4以外のワークシートを処理
' 各シートの最終行の取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' コピー範囲の設定(2行目以降)
Set copyRange = ws.Range("A2:D" & lastRow)
' データのコピーと貼り付け
copyRange.Copy ws4.Cells(ws4.Cells(ws4.Rows.Count, "A").End(xlUp).Row + 1, 1)
End If
Next ws
End Sub
マクロ実行前
マクロ実行後
Sheet1 ~ Sheet3 の最終行までのデータをコピーして、
Sheet4 の最終行の次の行から貼り付けます。
Sheet1 ~ Sheet3 の1行目は貼り付けません。
最終行の下に貼り付け(ユーザーが選択した範囲 InputBox)
以下のマクロを実行すると、手動で選択した範囲のデータを最終行に貼り付けます。
Sub 最終行に貼付()
Dim selectedRange As Range
Dim lastRow As Long
On Error Resume Next
'手動で範囲を選択
Set selectedRange = Application.InputBox("コピーする範囲を選択:", Type:=8)
On Error GoTo 0
If Not selectedRange Is Nothing Then
'F列の最終行を取得
lastRow = Cells(Rows.Count, 6).End(xlUp).Row
'選択したデータをF列に貼り付け
selectedRange.Copy Cells(lastRow + 1, 6)
End If
End Sub
マクロ実行前
マクロ実行後
「コピーする範囲を選択」画面が表示されるので、範囲を選択します。
今回はA5:D6 を選択します。
選択した範囲のデータを、F列の最終行から1行下に貼り付けます。
最終行の下に貼り付け(InputBox)
以下のマクロを実行すると、手動で入力した値を最終行に貼り付けます。
Sub 最終行に値入力()
Dim lastRow As Long
' A列の最終行の行番号を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 最終行の次の行に値を入力する
Cells(lastRow + 1, 1).Value = InputBox("データを入力してください:")
End Sub
マクロ実行前
マクロ実行後
「データを入力してください」画面が表示されるので、値を入力して「OK」をクリックします。
入力したデータを、A列の最終行から1行下に貼り付けます。
最終行の下に貼り付け(数式)
以下のマクロを実行すると、最終行に数式を貼り付けます。
Sub 計算式を最終行に貼付()
Dim lastRow As Long
'A列の最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
'数式を貼り付け
Cells(lastRow + 1, 1).Formula = "=SUM(A1:A10)"
End Sub
マクロ実行前
マクロ実行後
A列の最終行に数式をペーストします。
この記事がお役に立ちますと幸いです。
「ExcelVBA自動化のすべて ~35の事例で課題解決力を身につける~」
業務改善コンサルタントが教える ビジネスの現場で役立つExcelVBAの知識を解説
基本的な解決法と、応用例も紹介しています!