Sub 选中区域去重()
'
'选中区域去重 宏
'

'可以选中单列或多列,去重删除整行

Dim i, j, rng As Range, dict As Object, fr, lr, fc, lc, res
'获取选中区域中已使用的区域
Set rng = Intersect(ActiveSheet.UsedRange, Selection)
fr = rng.Row
lr = fr + rng.Rows.Count - 1
fc = rng.Column
lc = fc + rng.Columns.Count - 1
'引用勾选:VBA窗体-工具-引用-勾选“Microsoft Scripting Runtime”
'生成字典
Set dict = CreateObject("scripting.dictionary")
For i = lr To fr Step -1
    res = ""
    For j = fc To lc
        res = res & CStr(Cells(i, j).Value)
    Next
    '如果字典中不存在键res则加入键res并赋值为"",否则删除当前行
    If Not dict.exists(res) Then dict(res) = "" Else Rows(i).Delete
Next

End Sub

标签: Excel, , 选中区域去重

添加新评论