|
发表于 2014-10-6 11:05
|
显示全部楼层
本楼为最佳答案
本帖最后由 xdragon 于 2014-10-6 11:07 编辑
- Sub 多列选择去重复()
- Dim rng As Range, arr, area, i%, j%, k%, d As Object
- On Error Resume Next
- Set rng = Application.InputBox("请按CTRL选择需要去重复的列", "选择", , , , , , 8)
- If rng Is Nothing Then Exit Sub
- If rng.Rows.Count = 1 Then
- Exit Sub
- Else
- ReDim arr(1 To rng.Areas.Count)
- For i = 1 To rng.Areas.Count
- arr(i) = Intersect(ActiveSheet.UsedRange, rng.Areas(i)).Value
- Next
- Set d = CreateObject("scripting.dictionary")
- Set rng = Nothing
- For i = 2 To UBound(arr(1))
- For j = 1 To UBound(arr)
- For k = 1 To UBound(arr(j), 2)
- sr = sr & arr(j)(i, k)
- Next
- Next
- If d.exists(sr) Then
- If rng Is Nothing Then Set rng = Rows(i) Else Set rng = Union(rng, Rows(i))
- Else: d(sr) = ""
- End If
- sr = ""
- Next
- End If
- rng.Delete
- End Sub
复制代码 如果需要保留从上到下第一个不重复的,那就用这个吧 |
评分
-
查看全部评分
|