
ExcelVBA 行をコピーして特定の行を別の場所に複製することで、データの複製や加工が簡単に行えます。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
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
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
指定した行をコピーして新しい行に挿入
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
・コピー先のデータが上書きされる
→ 必要なら 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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。