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

相关文章