
ExcelVBA 行をコピーして特定の行を別の場所に複製することで、データの複製や加工が簡単に行えます。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
Excel VBA 行コピーと複製|シーン
以下のシーンで利用します。
1.データのバックアップを作成する(例: 元のデータを保持しつつ、別のシートにコピー)
2.特定の条件に合う行だけをコピーする(例: 金額が一定以上の行を別のシートにコピー)
3.テンプレート行を複製する(例: 既存のフォーマットを維持しつつ新しいデータを追加)
4.定期的にデータを転記する(例: 当日のデータを履歴シートにコピー)
Excel VBA 行コピーと複製|サンプルコード
Option Explicit
Sub CopyRow5to10() '標準モジュール
Rows(5).Copy Destination:=Rows(10)
End Sub
・Rows(5).Copy Destination:=Rows(10) で5行目を10行目にコピー
・値、書式、数式もそのままコピーされる
指定した行を別のシートにコピー
Option Explicit
Sub CopyRowToAnotherSheet() '標準モジュール
Sheets("Sheet1").Rows(5).Copy Destination:=Sheets("Sheet2").Rows(2)
End Sub
・Sheets("Sheet1").Rows(5).Copy でSheet1の5行目をコピー
・Destination:=Sheets("Sheet2").Rows(2) でSheet2の2行目に貼り付け
選択した行を別の行にコピー
Option Explicit
Sub CopySelectedRow() '標準モジュール
If Not TypeOf Selection Is Range Then
MsgBox "セルを選択してください。", vbExclamation, "エラー"
Exit Sub
End If
Selection.EntireRow.Copy Destination:=Rows(10)
End Sub
・Selection.EntireRow.Copy で選択した行をコピー
・Destination:=Rows(10) で10行目に貼り付け
特定の条件に合う行を別のシートにコピー
Option Explicit
Sub CopyImportantRows() '標準モジュール
Dim wsSrc As Worksheet, wsDst As Worksheet
Dim i As Long, lastRow As Long, dstRow As Long
Set wsSrc = Sheets("Sheet1")
Set wsDst = Sheets("Sheet2")
lastRow = wsSrc.Cells(Rows.Count, 1).End(xlUp).Row
dstRow = 1 ' コピー先の最初の行
For i = 1 To lastRow
If wsSrc.Cells(i, 1).Value = "重要" Then
wsSrc.Rows(i).Copy Destination:=wsDst.Rows(dstRow)
dstRow = dstRow + 1
End If
Next i
End Sub
・lastRow でA列の最終行を取得
・If wsSrc.Cells(i, 1).Value = "重要" で条件判定
・条件に合う行を wsDst.Rows(dstRow) にコピー
A列が空白でない行だけをコピー
Option Explicit
Sub CopyNonEmptyRows() '標準モジュール
Dim wsSrc As Worksheet, wsDst As Worksheet
Dim i As Long, lastRow As Long, dstRow As Long
Set wsSrc = Sheets("Sheet1")
Set wsDst = Sheets("Sheet2")
lastRow = wsSrc.Cells(Rows.Count, 1).End(xlUp).Row
dstRow = 1
For i = 1 To lastRow
If wsSrc.Cells(i, 1).Value <> "" Then
wsSrc.Rows(i).Copy Destination:=wsDst.Rows(dstRow)
dstRow = dstRow + 1
End If
Next i
End Sub
指定した行をコピーして新しい行に挿入
Option Explicit
Sub CopyRowAndInsert() '標準モジュール
Rows(5).Copy
Rows(6).Insert Shift:=xlDown
End Sub
・Rows(5).Copy でコピー
・Rows(6).Insert Shift:=xlDown で挿入
シートの全行をコピーする
Option Explicit
Sub CopyAllRows() '標準モジュール
Sheets("Sheet1").UsedRange.Copy Destination:=Sheets("Sheet2").Cells(1, 1)
End Sub
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
・コピー先のデータが上書きされる
→ 必要なら Insert を使って行を挿入してからコピーする
・コピー元とコピー先のセル結合に注意
→ セル結合された行をコピーするとエラーになることがある
・シート名のスペルミスに注意
→ Sheets("Sheet1") の部分が実際のシート名と一致しているか確認
・処理が遅くなる場合は Application.ScreenUpdating = False を使う
→ 大量の行をコピーする場合は画面更新を一時停止すると高速化できる
高速化
Application.ScreenUpdating = False
'(コピー処理)
Application.ScreenUpdating = True
Excel VBA 行コピーと複製|まとめ
目的 | 方法 |
指定の行をコピー | Rows(5).Copy Destination:=Rows(10) |
別のシートにコピー | Sheets("Sheet1").Rows(5).Copy Destination:=Sheets("Sheet2").Rows(2) |
選択行をコピー | Selection.EntireRow.Copy Destination:=Rows(10) |
行をコピーして挿入 | Rows(5).Copy → Rows(6).Insert |
シート全体をコピー | UsedRange.Copy Destination:=Sheets("Sheet2").Cells(1,1) |
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!