Sub 选中单列去重()
'
'选中单列去重 宏
'

'选中单列,去重删除整行,单独写一个不知道能不能提高效率

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

End Sub

标签: Excel, , 选中单列去重

仅有一条评论

  1. 小网管 小网管

    这个可以,执行速度也很快。

添加新评论