excel表格百萬數據如何查重?

excel表格有一百萬行數據(每行十幾位由大寫字母和數字混合組合),該如何查重?


刪除重複數據的話。用字典、比較快
2017-03-17 更新一下, 雖然字典比較快,但我還是建議用VBE自帶的method removeduplicates, 它比字典稍微慢一點,100萬行的數據去重複慢一秒左右。但是它使用非常簡單, 還可以選擇任意的列查重複,而且省了一步寫回Excel. 寫了一個procedure, 還有測試的timer(生成一百萬行的字母加數字加字母的數據去重) 。歡迎對比你的方法用時。

Sub test_timer()
ThisWorkbook.Worksheets(1).Range("A2:A1000000").Formula = "=CHAR(RANDBETWEEN(65,90)) RANDBETWEEN(1,99)CHAR(RANDBETWEEN(65,90))"
ThisWorkbook.Worksheets(1).Range("A2:A1000000").Value2 = ThisWorkbook.Worksheets(1).Range("A2:B1000000").Value2
DoEvents
Dim t: t = Now: Debug.Print: Debug.Print t: Beep
Call sort_removeduplicates
Debug.Print (Now - t) * 86400: Debug.Print Now
End Sub

Sub sort_removeduplicates()
Dim data As Worksheet
Dim rSortRange As Range
Set data = Worksheets(1)
With data
Set rSortRange = Range("A1:A" .Range("A" Rows.Count).End(xlUp).Row)
With rSortRange
.Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes
.RemoveDuplicates Columns:=(Array(1)), Header:=xlYes
End With
End With
End Sub

加個常見方法去重的用時對比。無論用那種方法,建議先排序一下。


要刪除就去重,要標識直接排序後加輔助列。不過這麼大數據量,速度。。。。。。


可以用excel自帶的去重複查看,可以用vba查,可以用sql語句查。用excel重要的是思路,並不是怎麼做。


推薦閱讀:

excel中如何轉換數據?
我在excel某格子里輸入一個公式,設置一個變數,以後只輸入變數就好了?
Excel怎麼篩選出特定的格式數據,例如:篩選出有縮進格式的數據?
excel 如何篩選一列中的特定序列的數組?
Excel遇到困難,求大神啊。?

TAG:數據分析 | MicrosoftExcel | Excel使用 | Excel編程 |