网站首页 > 博客文章 正文
大家好,我们今日继续讲解VBA代码解决方案的第63讲内容:数组的合并与字符串拆分(Join & Split),及筛选filter函数的应用
一Join函数:返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的,语法如下:
Join(sourcearray[, delimiter])
参数sourcearray是必需的,包含被连接子字符串的一维数组。
参数delimiter是可选的,在返回字符串中用于分隔子字符串的字符,如果忽略则使用空格(" ")来分隔子字符串。则列表中的所有项目都连接在一起,中间没有分隔符。
二:split函数:这个函数的讲解在之前已经讲过,不再多说了。
多个字符的合并和字符串按规律的拆分是经常遇到的,如:A-REW-E-RWC-2-RWC 按分隔符"-"拆分成6个字符放在一个数组中;有一组数array(23,45,7,1,76)想用分隔符-连接成一个字符串
上面两种情况的实现即用到:split(字符串,"分隔符") 拆分字符串。join(数组,"分隔符") 用分隔连接数组的每个元成一个字符串
实例一:
Sub Myst()
Dim arr, myst As String
myst = "A-REW-E-RWC-2-RWC"
arr = Split(myst, "-")
MsgBox arr(0) '显示数组的第一个数(分隔后的数组最小下标为0,不是1),显示结果为A
MsgBox Join(arr, ",") '再用","把数组的每个值连接成一个字符串,结果为"A,REW,E,RWC,2,RWC"
End Sub
值得注意的是:split和join只能对一维数组进行操作,
实例二:
Sub MyJoin()
Dim strJoin As String
strJoin = Join(Array("a", "b", "c"), ",")
MsgBox strJoin
End Sub
三: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(数组, 筛选的字符, 是否包含)
实例三:
Sub MyFD() '实例三
arr = Array("ABC", "A", "D", "CA", "ER")
arr1 = VBA.Filter(arr, "A", True)
arr2 = VBA.Filter(arr, "A", False)
MsgBox Join(arr2, ",")
End Sub
遗憾的是函数只能进行模糊筛选,不能精确匹配。
实例四:查找数组的差集
Sub Filter1()
Dim varArr1 As Variant
Dim varArr2 As Variant
Dim i As Integer
varArr2 = Array(1021, 1023, 1025)
varArr1 = Array(1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028)
For i = 0 To UBound(varArr2)
varArr1 = VBA.Filter(varArr1, varArr2(i), False)
Next i
MsgBox Join(varArr1)
End Sub
注意,filter函数在此是模糊查找,下面代码将无法返回我们想要的值.
代码截图:
运行结果一:
运行结果二:
运行结果三:
运行结果四:
今日内容回向:
1 VBA数组的三个函数是什么?
2 数组筛选时两个方案是什么?
猜你喜欢
- 2024-10-27 ES6扩展运算符:详解与实践(es6扩展运算符深拷贝)
- 2024-10-27 Excel|文本花样连接,CONCATENATE、CONCAT、TEXTJOIN帮你完成
- 2024-10-27 Javascript中数组的方法(javascript 数组方法)
- 2024-10-27 LeetCode题集-4 - 寻找两个有序数组的中位数,六种解法,万字讲解
- 2024-10-27 JS中的Array对象——数组的合并、转换、迭代、排序、堆栈
- 2024-10-27 JavaScript 数组方法的介绍(javascript数组方法有哪些)
- 2024-10-27 vue数组更新后不渲染页面与$set的渊源
- 2024-10-27 vue-router的基本使用(vue- router)
- 2024-10-27 ???数组中的逆序对(归并排序思想)
- 2024-10-27 数据分析工具:Pandas架构分析(pandas数据分析模型)
你 发表评论:
欢迎- 367℃用AI Agent治理微服务的复杂性问题|QCon
- 358℃初次使用IntelliJ IDEA新建Maven项目
- 358℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 351℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 346℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 342℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)