範囲内の重複データを削除する
次の例では、列 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 のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示