分享

Join函数和Split函数

 樵夫1964 2021-11-23
《VBA数组与字典方案》教程是我推出的第三套教程,目前已经是第一版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。七、三、一套教程掌握后,可以解决大多数工作中遇到的实际问题。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是第25讲:Join函数和Split函数
图片

第二十五讲  数组的合并(Join)拆分(Split)及筛选(Filter)

大家好,我们今日继续讲解VBA数组与字典解决方案第25讲:数组的合并拆分及筛选的应用。这讲的内容中拆分(Split)及筛选(Filter)两个函数在我之前的章节中已经讲过了,这里仅仅再次提出一下。

1  Join函数说明

此函数返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
语法如下:Join(sourcearray[, delimiter])
参数sourcearray是必须的,包含被连接子字符串的一维数组。
参数delimiter是可选的,在返回字符串中用于分隔子字符串的字符,如果忽略则使用空格(' ')来分隔子字符串。则列表中的所有项目都连接在一起,中间没有分隔符。

2  split函数说明

这个函数的讲解在之前已经讲过,是拆分字符串的函数,返回一个下标从零开始的一维数组,包含指定数目的子字符串,语法如下:
Split(expression[, delimiter[, limit[, compare]]])
参数expression是必须的,包含子字符串和分隔符的字符串表达式。
参数delimiter是必须的,用来标识子字符串边界的字符串字符。如果忽略,则使用空格字符(' ')作为分隔符。
多个字符的合并和字符串按规律的拆分是经常遇到的,例如:A-REW-E-RWC-2-RWC 按分隔符“-”拆分成6个字符放在一个数组中;有一组数array(23,45,7,1,76)想用分隔符-连接成一个字符串。上面两种情况的实现即用到:split(字符串,'分隔符') 拆分字符串。join(数组,'分隔符')   用分隔连接数组的每个元成一个字符串
值得注意的是:split和join只能对一维数组进行操作。

3  Filter函数说明

返回一个下标从零开始的数组,该数组包含基于指定筛选条件的一个字符串数组的子集。filter()是数组的一个常用操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
语法:Filter(sourcesrray, match[, include[, compare]])
sourcesrray必须的。要执行搜索的一维字符串数组。
match必须的。要搜索的字符串。
include可选的。Boolean值,表示返回子串包含还是不包含match字符串。如果include是True,Filter返回的是包含match子字符串的数组子集。如果include是False,Filter返回的是不包含match子字符串的数组子集。
compare可选的。数字值,表示所使用的字符串比较类型。
Filter函数实现数组筛选:数组的筛选就是根据一定的条件,从数组中筛选符合条件的值,组成一个新的数组,实现数组筛选的Filter函数用法:Filter(数组, 筛选的字符,  是否包含)
遗憾的是函数只能进行模糊筛选,不能精确匹配。

4  数组函数的实例应用及讲解

Sub MyNZsz_25() '第25讲  
  【代码讲教程】
End Sub

代码截图:
图片
代码讲解:
  1)  myst = 'A-REW-E-RWC-2-RWC'  'myst是字符串
   arr = Split(myst, '-')  'arr是数组,Split返回的是一维数组
   [a:e].ClearContents’ 清零A列到E列
   [a1].Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)’配合转置函数输出数组  
   Range('b1') = Join(arr, ',') 'Join 返回的是字符串
  2 ) arr1 = Array('ABC', 'A', 'D', 'J', 'CA', 'ER') 'arr1是数组,是用Array建立的
   Range('c1').Resize(UBound(arr1) + 1) = WorksheetFunction.Transpose(arr1)  
   myst1 = Filter(arr1, 'A', True)  'myst1为数组,Filter 返回的是数组,是一个含“A”的数组
   [d1].Resize(UBound(myst1) + 1) = WorksheetFunction.Transpose(myst1) 配合转置函数输出数组 
下面看代码的输出结果:
图片


今日内容回向:
1  JOIN FILTER SPLIT 的意义是什么?
2  上面的三个函数都可以返回数组吗?
图片
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
图片
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多