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。