大家好,我们今天继续讲解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 如何理解工作表数据是二维数组?