範囲内の重複データを削除する

次の例では、列 A のデータ範囲を取得し、重複データを削除する方法を示します。 この例では、Range オブジェクトの AdvancedFilter メソッドを使用し、Unique パラメーターが True と等しい場合に、データの一意のリストを取得します。 TheAction パラメーターは xlFilterInPlace と等しく、データが所定の位置でフィルター処理されることを指定します。 元のデータを保持する場合は、Action パラメーターを xlFilterCopy に設定し、フィルター処理されたデータをCopyToRange パラメーターにコピーする場所を指定します。 一意の値がフィルタリングされると、この例では Range オブジェクトの SpecialCells メソッドを使用して、残りの空白行を検出し、それらを削除します。

サンプル コードの提供元: Tom Urtis、 Atlas Programming Management

Sub DeleteDuplicates()
    With Application
        ' Turn off screen updating to increase performance
        .ScreenUpdating = False
        Dim LastColumn As Integer
        LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column + 1
        With Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
            ' Use AdvanceFilter to filter unique values
            .AdvancedFilter Action:=xlFilterInPlace, Unique:=True
            .SpecialCells(xlCellTypeVisible).Offset(0, LastColumn - 1).Value = 1
            On Error Resume Next
            ActiveSheet.ShowAllData
            'Delete the blank rows
            Columns(LastColumn).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
            Err.Clear
        End With
        Columns(LastColumn).Clear
        .ScreenUpdating = True
    End With
End Sub

投稿者について

MVP Tom Urtis は、シリコン バレーにある Atlas Programming Management の創業者です。Atlas Programming Management は、Microsoft Office および Excel に関するあらゆるビジネス ソリューションを提供する企業です。 Tom は 25 年以上のビジネス管理および Microsoft Office アプリケーション開発の経験があり、『Holy Macro! It's 2,500 Excel VBA Examples』の 共著者でもあります。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。