http://club.excelhome.net/thread-888978-2-1.html
以下是楼主的方法1:
- Sub 矩形1_Click()
- i = Range("A65536").End(xlUp).Row
- For s = 1 To i
- For ss = i To s + 1 Step -1
- If Cells(ss, 1) = Cells(s, 1) Then
- Cells(ss, 1).Delete shift:=xlUp
- End If
- Next ss
- Next s
- End Sub
感觉与我常用的数组去重是一样的(我是通过两层循环判断比较,重复的清为空值,但是我的做法中,对于后面遇到的空值会跳过,提高运行效率,楼主的,在最后几个单元格会无意义的跑空……),不过,巧妙的是利用了单元格删除后,后面单元格自动上移一格的特点,在内存数组中相当于是把元素前赶了一个位置,如此,不需要另行清除空值了……
楼主方法二:
- Sub 矩形2_Click()
- i = Range("A65536").End(xlUp).Row
- For s = i To 1 Step -1
- If Application.WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(s, 1)), Cells(s, 1)) > 1 Then
- Cells(s, 1).Delete shift:=xlUp
- End If
- Next
- End Sub
楼主方法三:
- Sub 矩形3_Click()
- i = Range("A65536").End(xlUp).Row
- Dim dic As Object, ii&, arr, ra
- Set dic = CreateObject("Scripting.Dictionary")
- arr = Range("a1:a" & i)
- For ii = 1 To UBound(arr)
- ra = dic(arr(ii, 1))
- Next
- Range("a:a").ClearContents
- Range("a1").Resize(dic.Count, 1) = Application.Transpose(dic.Keys)
- End Sub
楼主方法四:
- Sub 矩形4_Click()
- Columns(1).RemoveDuplicates 1
- End Sub
“Excel 开发人员参考
Range.RemoveDuplicates 方法
从值区域中删除重复的值。
版本信息
已添加版本: Excel 2007
语法
表达式.RemoveDuplicates(Columns, Header)
表达式 一个代表 Range 对象的变量。
参数
名称 必选/可选 数据类型 说明
Columns 可选 Variant 包含重复信息的列的索引数组。如果没有传递任何内容,则假定所有列都包含重复信息。
Header 可选 XlYesNoGuess 指定第一行是否包含标题信息。xlNo 是默认值;如果希望 Excel 确定标题,则指定 xlGuess。