以下示例演示如何获取列 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 的创始人,这是一家位于硅谷的全服务型 Microsoft Office 和 Excel 业务解决方案公司。 Tom 在业务管理和 Microsoft Office 应用程序开发方面拥有 25 年以上的经验,与他人合著过“Holy Macro! It's 2,500 Excel VBA Examples”(Holy Macro! 2,500 个 Excel VBA 示例)。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。