【VBA】重複データを別ブックとして保存する方法
手作業で重複データを確認し、別ファイルに移動するのは時間がかかるだけでなく、ミスのリスクも高まります。この記事では、VBAを使用して重複データを自動的に別のエクセルブックに保存する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub SaveDuplicateDataToNewWorkbook()
Dim ws As Worksheet, lastRow As Long, i As Long
Dim newWb As Workbook
Set ws = ThisWorkbook.Sheets("Sheet1") '対象シート名を指定
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'最後の行を取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
'新しいワークブックを作成
Set newWb = Workbooks.Add
'データコピー処理
For i = 2 To lastRow '1行目はヘッダーとして扱う
If IsDuplicate(ws.Rows(i)) Then
ws.Rows(i).Copy Destination:=newWb.Sheets(1).Rows(newWb.Sheets(1).UsedRange.Rows.Count + 1)
End If
Next i
'新しいワークブックを保存
newWb.SaveAs ThisWorkbook.Path & "\DuplicateData.xlsx"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function IsDuplicate(row As Range) As Boolean
Dim ws As Worksheet, lastRow As Long, i As Long
Set ws = row.Parent '現在のワークシートを取得
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow - 1
If Application.WorksheetFunction.CountIf(ws.Columns(1), row.Value) > 1 Then IsDuplicate = True: Exit Function
Next i
End Functionよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。