登陆

极彩娱乐登录平台-在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法

admin 2019-10-31 208人围观 ,发现0个评论

大家好,咱们今天持续解说VBA数组与字典解决方案第22讲:在VBA中怎么运用动态数组,以及运用动态数组去除重复值的办法。假如文本中含有许多的重复值,此刻,假如咱们要除掉重复值,该怎么办?用VBA的办法该怎么做到呢?我在这和解下一讲中将回答这个问题,并提供应读者一个能够测验的实例。今天先讲这个内容要用到的知识点。

一 :Filter函数:这个函数回来一个下标从零开始的数组,该数组包括依据指定挑选条件的一个字符串数组的子集,语法如下:Filter(sourcesrray, match[, include[, compare]])

参数

a) sourcesrray是有必要的,要履行查找的一维字符串数组。

b) match是有必要的,要查找的字符串。

c) include是可选的,Boolean值,表明回来子串是否包括match字符串。假如参数include是True,Filter函数回来的是包括match参数子字符串的数组子集。假如参数include是False,Filter函数回来的是不包括mat极彩娱乐登录平台-在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法ch参数子字符串的数组子集。

d) compare是可选的,所运用的字符串比较类型。

二极彩娱乐登录平台-在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法:ReDim句子,这个句子在进程等级中运用,用于为动态数组变量从头分配存储空间,语法如下:

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]]

参数

a) Preserve是可选的,关键字,当改动原有数组最末维的巨细时,运用此关键字能够坚持数组中本来的数据。

b) varname是有必要的,变量的称号。

c) subscripts是有必要的,数组变量的维数,最多能够界说 60 维的多维数组,运用下面的语法;[lower To] upper [,[lower To] upper]

运用动态数组去除文本中的重复值,如下面的代码所示。

Sub MyNZsz_5() '第22讲 运用数组排重的办法

Dim Splarr() As String

Dim Arr() As String

Dim Temp() As String

Dim r As Integer

Dim i As Integer

On Error Resume Next

Splarr = Split(Sheets("22").Range("a1"), " ")

For i = 0 To UBound(Splarr)

Temp = Filter(Arr, Splarr(i))

If UBound(Temp) < 0 Then

r = r + 1

ReDim Preserve Arr(1 To r)

Arr(r) = Splarr(i)

End If

Next

Sheets("22").Range("a5").Resize(r, 1) = Application.Transpose(Arr)

End Sub

代码解析:

MySplitarr进程将作业表Sheets("22")中A1单元格的文本去除重复值后写入到作业表Sheets("22")中的A列单元格。

第2行代码声明数组Splarr用来保存Sheets("22")中A1单元格的文本。

第3行代码声明数组Arr用来保存去除重复值后的文本。

第4行代码极彩娱乐登录平台-在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法声明数组Temp用来判别文本是否重复。

第5行代码声明变量r用来保存去除重复值后的文本数量。

第7行代码发动过错处理程序来疏忽过错,由于在程序运转到第11行代码会发生下标越界过错。

第8行代码运用Split 函数以Sheets("22")中A1单元格的文本创立一个下标从零开始的一衣服尺码维数组。

第9行代码运用For...Next句子遍历数组Splarr的一切元素。

第10行代码运用Filter函数创立一个数组Temp用来保存以当时Splarr数组的值在Arr数组中的查找成果。

第11行代码依据回来的数组Temp的最大下标来判别当时Splarr数组的值是否重复。在运用运用Filter函数时假如没有相匹配的值,将回来一个空数组,最大下标小于0。假如没有找到,回来的成果是-1.

第12行代码假如当时Splarr数组的值不重复则将变量r的值加1。

第13行代码从头界说动态数组巨细。

第14行代码将不重复值添加到数组Arr中。

第15行代码运用作业表Transpose函数将去除重复值的的文本转置后写入到作业表单元格中。

代码的截图:

运转前的截图:很显然有许多的重复数值:

运转后的截极彩娱乐登录平台-在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法图:

今天内容回向:

1 上述代码是否清楚了它的运转进程呢?

2 第7行代码发动过错处理程序来疏忽过错,这是为什么呢?

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP