📘 Excel逆引き事典

【VBA】重複データをバックグラウンドで配列に格納する方法

日々の業務で大量のデータの中から特定の情報を抽出し、それを効率的に管理することは重要です。特に重複データは、分析や報告書作成時に大きな負担となります。この記事では、VBAを使用してExcel内の重複データをバックグラウンドで配列に格納する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub DuplicateDataToArray()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Dim lastRow As Long, i As Long, j As Integer, arr() As Variant
    Application.ScreenUpdating = False
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    ReDim arr(0 To lastRow)
    For i = 2 To lastRow '仮にデータが2行目から始まるとする
        If IsDuplicate(arr(), ws.Range("A" & i)) Then
            j = j + 1
            ReDim Preserve arr(0 To j)
            arr(j) = ws.Range("A" & i).Value
        End If
    Next i
    Application.ScreenUpdating = True
End Sub

Function IsDuplicate(arr() As Variant, cell As Range) As Boolean
    Dim i As Integer
    For i = LBound(arr) To UBound(arr)
        If arr(i) = cell.Value Then
            IsDuplicate = True
            Exit Function
        End If
    Next i
    IsDuplicate = False
End Function

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。