VBA巧妙处理字符串连接

您所在的位置:网站首页 excel合并单元格文本内容加分隔符 VBA巧妙处理字符串连接

VBA巧妙处理字符串连接

2024-07-11 11:59| 来源: 网络整理| 查看: 265

字符串连接是经常需要用到的功能,在VBA代码中可以使用+也可以使用&运算符,似乎是简单的不能再简单的功能,但是实际使用过程中也是有一些技巧的。 实例:如下数据中提取张三的订单编号,并使用半角逗号连接。 在这里插入图片描述 示例代码如下。

Sub demo1() Dim vntArr, i, strMsg vntArr = [a1].CurrentRegion.Value For i = 2 To UBound(vntArr) If vntArr(i, 1) = "张三" Then If Len(strMsg) = 0 Then strMsg = vntArr(i, 2) Else strMsg = strMsg & "," & vntArr(i, 2) End If End If Next Debug.Print strMsg End Sub

【代码解析】 第3行代码将数据加载到数组中。 第4~12行代码从第2行开始循环处理数据。 第5行代码代码根据第一列判断姓名是否为“张三”。 如果strMsg为空,说明是定位到的第一个符合条件的记录,第7行代码直接将订单编号保存到strMsg变量。 如果strMsg不为空,第9行代码将订单编号保存到strMsg变量,并添加逗号作为分隔符。 第13行代码在立即窗口中输出全部订单号,如下图所示。 在这里插入图片描述 整个代码过程并不复杂,第6~10行需要对于第一个订单编号做特殊处理,所以代码行数显得比较多。

其实,可以用变通的思路来处理这个问题,示例代码如下。

Sub demo2() Dim vntArr, i, strMsg vntArr = [a1].CurrentRegion.Value For i = 2 To UBound(vntArr) If vntArr(i, 1) = "张三" Then strMsg = strMsg & "," & vntArr(i, 2) Next Debug.Print Mid(strMsg, 2) End Sub

【代码解析】 第5行代码并没有对第一个订单编号做特殊处理,因此循环结束后,strMsg变量的值为,KA12394,SS97826,EDG9999,第7行代码输出结果时,使用Mid函数进行截断,去除多余的第一个逗号。 无论是从代码行数和整个的编程逻辑来说demo2都更简洁。

Join可以实现数组的快速连接,所以使用数组来实现也是可行的。示例代码如下。

Sub demo3() Dim vntArr, i, strMsg, vntRes(), n vntArr = [a1].CurrentRegion.Value n = 0 For i = 2 To UBound(vntArr) If vntArr(i, 1) = "张三" Then ReDim Preserve vntRes(n) vntRes(n) = vntArr(i, 2) n = n + 1 End If Next Debug.Print Join(vntRes, ",") End Sub

【代码解析】 第7行代码重新上面动态数组,并保存已有的数组值。 第8行代码将订单编号保存在数组中。 第12行代码使用Join函数组合数组值,并输出到代码窗口。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3