【VBA】重複データを高速に転記する方法
手作業で重複データを転記するのは時間と労力がかかります。この記事では、VBAを使って簡単に且つ高速に重複データを転記する方法をお伝えします。
サンプルコード
VBA
Option Explicit
Sub DuplicateDataTransfer()
Dim wsSource As Worksheet, wsTarget As Worksheet
Dim lastRowSrc As Long, lastRowTgt As Long, i As Long
' ソースとターゲットのワークシートを指定
Set wsSource = ThisWorkbook.Sheets("Sheet1")
Set wsTarget = ThisWorkbook.Sheets("Sheet2")
' 画面更新停止(高速化)
Application.ScreenUpdating = False
' ソースシートの最終行を取得
lastRowSrc = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
' ターゲットシートの最終行を取得
lastRowTgt = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1
' データ転記処理開始
For i = 2 To lastRowSrc
If IsDuplicate(wsSource.Range("A" & i)) Then
wsTarget.Cells(lastRowTgt, "A").Value = wsSource.Cells(i, "A").Value
lastRowTgt = lastRowTgt + 1
End If
Next i
' 画面更新再開
Application.ScreenUpdating = True
End Sub
' 重複チェック関数
Function IsDuplicate(cell As Range) As Boolean
Dim wsTarget As Worksheet, lastRowTgt As Long
Set wsTarget = ThisWorkbook.Sheets("Sheet2")
lastRowTgt = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row
' ターゲットシートのデータと比較
If Application.WorksheetFunction.CountIf(wsTarget.Range("A1:A" & lastRowTgt), cell.Value) > 0 Then
IsDuplicate = True
Else
IsDuplicate = False
End If
End Functionよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。