|
发表于 2013-12-28 13:29
|
显示全部楼层
本楼为最佳答案
- Sub 删除选定列有重复数据的行()
- Dim x As Range
- On Error Resume Next
- Set x = Application.InputBox(prompt:="请选择要操作的列或者列区域", Title:="提示", Default:="请选择", Type:=8)
- If x Is Nothing Then Exit Sub
- If x.Rows.Count = 1 Then Exit Sub
- '忽略多区域
- If x.Areas.Count > 1 Then Exit Sub
- '忽略只有一选数据的区域
- arr = x.Value
- Dim rg As Range, dic As Object
- Set dic = CreateObject("scripting.dictionary")
- Application.ScreenUpdating = False
- For i = UBound(arr) To LBound(arr) Step -1
- If dic.Exists(arr(i, 1)) Then
- If rg Is Nothing Then
- Set rg = x.Rows(i).EntireRow
- Else
- Set rg = Union(rg, x.Rows(i).EntireRow)
- End If
- Else
- dic.Add arr(i, 1), ""
- End If
- Next
- If Not rg Is Nothing Then rg.Delete
- Application.ScreenUpdating = True
- Set dic = Nothing
- End Sub
复制代码 |
评分
-
查看全部评分
|