VBA數組與字典解決方案24講:對某列數據排重,並回填不重複數據
大家好,我們今天繼續講解VBA數組與字典解決方案的相關內容,今日講解的是第24講:對某列數據的排重,並回填不重複數據的方法。這是在工作中經常用的內容了,通過前幾講的講解,我們對動態數組有了深刻的認識,今日就是我們利用前幾講內容完成我們實際問題的過程了。
如下面的工作表數據:
在A列中純在着大量的重複數據,而且沒有一定的規律,如何排除呢?我們看下面的代碼:
Sub MyNZsz_7() '第24講 利用數組對工作表某列數據排重的方法
Dim Arr() As String
Dim Temp() As String
Splarr = Range("A1:A" & Range("A1").End(xlDown).ROW)
ReDim Arr(1)
Arr(1) = Splarr(1, 1)
r = 1
For i = 2 To UBound(Splarr)
Temp = Filter(Arr, Splarr(i, 1))
If UBound(Temp) < 0 Then
r = r + 1
ReDim Preserve Arr(1 To r)
Arr(r) = Splarr(i, 1)
End If
Next
Sheets("24").Range("C1").Resize(r, 1) = Application.Transpose(Arr)
End Sub
代碼截圖如下:
代碼的講解:
1 Splarr = Range("A1:A" & Range("A1").End(xlDown).ROW) 此處我定義了數組爲A列的數據,大家要記住這種寫法。
2 Arr(1) = Splarr(1, 1) 此處要注意的是Splarr(1, 1)是一個二維數組,這一點要注意理解,也就是說工作表中的數據都是二維數組的元素。
下面看代碼的運行:
運行的時間幾乎可以忽略不計,上圖我僅僅給出了部分的結果。
今日內容迴向:
1 如何從工作表數據給數組賦值?
2 如何理解工作表數據是二維數組?