Excel

 【Excel】VBAマクロで重複削除し(行や1列のみ:配列)重複しないデータリストを作成する方法【RemoveDuplicates, UniqueList】

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事ではExcelのVBAマクロを使って、重複データを削除する方法について解説していきます。

ポイントとしてはRemoveDuplicatesメソッド、UniqueList関数を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

VBAマクロで重複で行削除する方法(1列のみに着目)

それではまず、1列のみに着目した行の重複削除について解説していきます。

この方法は、特定の列における重複をチェックし、重複している行を削除することができます。


Sub IchiretsuRemoveDuplicates()
    Dim mySheet As Worksheet
    Set mySheet = ThisWorkbook.Sheets("DataSheet")
    Dim hensuuRange As Range
    Set hensuuRange = mySheet.Range("A1:A100") ' ここではA列の1から100行目を指定

    ' 重複削除を実行
    hensuuRange.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でIchiretsuRemoveDuplicates関数を実行します。

この関数は指定された範囲内で1列目に着目し、重複する行を削除します。

 

VBAマクロで重複で行削除する方法(複数列に着目、OR条件)

続いては、複数列を対象とした重複削除(OR条件)について解説していきます。

この方法は、複数の列のいずれかに重複がある場合に、その行を削除します。


Sub FukusuuRetuRemoveDuplicates()
    Dim mySheet As Worksheet
    Set mySheet = ThisWorkbook.Sheets("DataSheet")
    Dim hensuuRange As Range
    Set hensuuRange = mySheet.Range("A1:C100") ' A列からC列の1から100行目を指定

    ' 重複削除を実行(1,2,3列目に着目)
    hensuuRange.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
End Sub

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でFukusuuRetuRemoveDuplicates関数を実行します。この関数は、指定された範囲内の複数列にわたる重複を検出し、該当する行を削除します。

 

VBAマクロで配列の重複を削除し重複しないデータリストを作成する方法

最後に、配列内の重複要素を削除して重複のないデータリストを作成する方法について見ていきます。

このテクニックは、データを効率的に整理し、重複のないリストを生成するのに役立ちます。


Sub UniqueList()
    Dim mySheet As Worksheet
    Set mySheet = ThisWorkbook.Sheets("DataSheet")
    Dim sourceRange As Range
    Dim uniqueCollection As Collection
    Set sourceRange = mySheet.Range("A1:A100")
    Set uniqueCollection = New Collection
    
    Dim cell As Range
    Dim value As Variant

    ' 重複しない値のみをコレクションに追加
    On Error Resume Next ' エラーを無視(同じ値を追加しようとした場合に発生するエラー)
    For Each cell In sourceRange
        value = cell.Value
        uniqueCollection.Add value, CStr(value)
    Next cell
    On Error GoTo 0 ' エラー無視を解除

    ' コレクションから配列へ変換
    Dim uniqueArray() As Variant
    ReDim uniqueArray(1 To uniqueCollection.Count)

    Dim i As Integer
    For i = 1 To uniqueCollection.Count
        uniqueArray(i) = uniqueCollection(i)
    Next i
    
    ' 結果をシートに出力(オプション)
    mySheet.Range("B1").Resize(uniqueCollection.Count, 1).Value = Application.WorksheetFunction.Transpose(uniqueArray)
End Sub

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

コードのAlt+F8を押し、マクロ選択画面でUniqueList関数を実行します。

この関数は、指定された範囲から重複しない値のみを取り出し、新しいデータリストとしてシートに出力するものです。

各ステップはコメントを通じて初心者にも理解しやすいように詳細に説明していますので、ぜひ参考に!

まとめ VBAマクロで重複しないデータリストを作成する(重複削除:1列のみ:配列)方法【RemoveDuplicates, UniqueList】

この記事で紹介したVBAマクロのテクニックを駆使することで、Excelデータの整理がよりスムーズになります。

重複データを効率的に削除し、ストレスフリーに生きていきましょう!!