当前位置:首页 > 天道酬勤 > 正文内容

vba 定义动态二维数组(vba定义动态数组)

张世龙2021年12月20日 04:45天道酬勤950

你好。 今天,我们将继续讨论第22届VBA数组和词典解决方案,以及如何在VBA中使用动态数组和使用动态数组消除重复值。 如果文本中包含大量重复值,此时该如何排除重复值? 用VBA的方法该怎么办? 我在这个讲稿和下面的讲稿中解答这个问题,给读者提供可以测试的实例。 今天先说一下这个内容要用到的知识点。

(过滤器函数)此函数返回一个数组,其中包含基于指定过滤器条件的字符串数组的子集,后缀从零开始。 语法如下: 过滤器(源光线,匹配[ (,包括[,比较] ] ) )

参数

a ) sourcesrray是必需的,是执行搜索的一维字符串数组。

b ) match是必需的,是要搜索的字符串。

c ) include是可选的布尔值,指示返回的子字符串是否包含匹配字符串。 如果参数include为True,则Filter函数返回数组的子集,该数组包含match参数的子字符串。 如果参数include为False,则Filter函数返回不包含match参数子字符串的数组的子集。

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

)2) ReDim语句。 此语句在过程级别使用,用于重新分配动态数组变量的存储。 语法如下:

redim [保留] varname [预订类型] [,预订] [预订类型]

参数

a ) Preserve是可选的关键字,用于在调整原始数组的最终维的大小时保留数组中的原始数据。

b ) varname是必需的,是变量的名称。

c )需要订阅。 数组变量的维数最多可以定义60维的多维数组。 使用以下语法: “lower to”上传器

使用动态数组从文本中删除重复的值,如以下代码所示。

Sub MyNZsz_5() )利用第22次数组排序的方法

Dim Splarr ()和字符串

Dim Arr ()和字符串

Dim Temp ()和字符串

dim r as整合器

dim I as集成器

错误恢复下一步

splarr=剥离(sheets (22 ).range ) ) a1),) )

fori=0to ubound (喷溅) )。

temp=过滤器(风暴I ) )

if ubound (温度)0 Then

r=r 1

redimpreservearr(1tor ) )

ARR(r )=散热器(I ) I ) ) )。

终点国际机场

下一个

sheets(22 ) ).range ) a5).Resize(r,1 )=应用程序.传输(arr ) ) ) ) ) ) ) ) ) )。

最终辅

代码分析:

MySplitarr过程将工作表sheets'22 '的A1单元格中的文本写入工作表sheets'22 '的a列中,不包括重复值。

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

第三行的代码声明数组Arr用于保存排除重复值的文本。

第四行的代码声明数组Temp用于确定文本是否重复。

第五行的代码声明变量r用于保存文本的数量,不包括重复值。

第7行代码启动错误处理程序并忽略错误。 因为如果执行程序到第11行的代码,将会发生下标越界错误。

在第八行代码中,使用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函数替换掉重复值的文本,并将其写入工作表的单元格。

代码的屏幕快照:

运行前的屏幕快照:显然有很多重复的数字:

运行后的屏幕快照:

今天的内容如下

1上述代码清楚了其执行过程吗?

为什么第二行代码会启动错误处理程序而忽略错误呢?

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/25387.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。