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

示例代码如下。

Sub demo1()Dim vntArr, i, strMsgvntArr = [a1].CurrentRegion.ValueFor i = 2 To UBound(vntArr)If vntArr(i, 1) = "张三" ThenIf Len(strMsg) = 0 ThenstrMsg = vntArr(i, 2)ElsestrMsg = strMsg & "," & vntArr(i, 2)End IfEnd IfNextDebug.Print strMsg
End Sub

【代码解析】
第3行代码将数据加载到数组中。
第4~12行代码从第2行开始循环处理数据。
第5行代码代码根据第一列判断姓名是否为“张三”。
如果strMsg为空,说明是定位到的第一个符合条件的记录,第7行代码直接将订单编号保存到strMsg变量。
如果strMsg不为空,第9行代码将订单编号保存到strMsg变量,并添加逗号作为分隔符。
第13行代码在立即窗口中输出全部订单号,如下图所示。

整个代码过程并不复杂,第6~10行需要对于第一个订单编号做特殊处理,所以代码行数显得比较多。


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

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

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


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

Sub demo3()Dim vntArr, i, strMsg, vntRes(), nvntArr = [a1].CurrentRegion.Valuen = 0For i = 2 To UBound(vntArr)If vntArr(i, 1) = "张三" ThenReDim Preserve vntRes(n)vntRes(n) = vntArr(i, 2)n = n + 1End IfNextDebug.Print Join(vntRes, ",")
End Sub

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

VBA巧妙处理字符串连接相关推荐

  1. excel宏字符串连接mysql_Excel 访问Sql 数据库的连接字符串

    原标题:Excel 访问Sql 数据库的连接字符串 SQL Server数据库的OLE DB连接方法和sql连接字符串 Excel使用OLE DB或OleDbConnection (.NET)方式 ( ...

  2. m.pythontab.com_python字符串连接的三种方法及其效率、适用场景详解

    python3.x拼接字符串一般有以下几种方法: 1. 直接通过(+)操作符拼接s = 'Hello'+' '+'World'+'!' print(s) 输出结果:Hello World! 使用这种方 ...

  3. JSTL 读取数组 和 字符串连接

    2019独角兽企业重金招聘Python工程师标准>>> JSTL读取数组: 从后台取得一个字符串,如:AA-50-3,通过-划分成字符串数组.然后读取每个字符串. <c:set ...

  4. shell编程:实现shell字符串连接功能

    功能:实现shell字符串连接功能 a=0 s1=test. s2=.wav s3=.mp3 s4=0 s5=00str="sox ./${s1}${a}${s2} ./${a}${s3}& ...

  5. python字符串连接方式_Python 字符串连接方式有这么种,你知道吗?

    字符串连接,就是将2个或以上的字符串合并成一个,看上去连接字符串是一个非常基础的小问题,但是在Python中,我们可以用多种方式实现字符串的连接,稍有不慎就有可能因为选择不当而给程序带来性能损失. 方 ...

  6. 【九度OJ】题目1206:字符串连接

    题目网址链接:http://ac.jobdu.com/problem.php?pid=1206 题目描述: 题目描述: 不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来.输 ...

  7. java连接字符串_Java字符串连接运算符

    Java字符串连接运算符 在java语言中所有的字符串都使用半角双引号括起来的,字符串属于引用数据类型,不属于基本数据类型的范畴,怎么定义一个字符串的变量呢?例如:String name = &quo ...

  8. matlab字符衔接,matlab字符串连接(多个字符串)的经验,matlab字符串

    matlab字符串连接(多个字符串)的经验,matlab字符串 参考 matlab中字符串连接的3种方法  文章,实验遇到的一些小白问题,如有问题希望大神们给予指导. Matlab中,两个或多个字符串 ...

  9. C语言经典例86-两个字符串连接

    目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 两个字符串连接,有字符串str1和str2,假设str1足够大,要求将str2连接到str1后面 2 分析 我们知道string.h中有字符 ...

最新文章

  1. WSL 或者ubantu安装 apt-get install npm 失败解决方法
  2. 三种ajax解析模式!
  3. RISC-V应用创新大赛 | 一文详解RVB2601套件 助你快速上手赢比赛
  4. 朴素贝叶斯和贝叶斯估计
  5. WordPress 响应式全站 AJAX 主题:Beginning
  6. 为同一个元素绑定多个不同的事件,并指向相同的事件处理函数方法
  7. 一年中重要的节日列表_感悟 | 一年中最重要的节日是春节!
  8. 跨界 +赋能——互联网的下一个关键词
  9. 【转载】GridView自动排序
  10. VS+Qt 如何设置软件版本版权,获取软件版本并显示版本号?
  11. C4D教程大纲(R23)+笔记
  12. 页面视觉稳定性之优化CLS
  13. 使用 kickstart 半自动化安装CentOS系统 利用PXE实现自动化安装centos系统
  14. 美国大学计算机科学gpa,美国大学MS硕士平均GPA是多少分?
  15. Docker 入坑指南
  16. 浙里办前端H5对接小结(复盘自用)
  17. win7修复计算机消失,win7系统引导文件丢失的修复妙招
  18. 发布汇编集成编译器Win-Masm v2.2
  19. 使用vxe-table 制作编辑表格
  20. 如何学习编程?如何学号C语言?编程学习网站汇总

热门文章

  1. 闲鱼项目如何操作?日收入1000+详细讲解!
  2. 获取App Store app下载链接
  3. HR:你们这个学校是三本吗?对不起,阿里巴巴Android面试都问些什么
  4. 天玑900相当于什么处理器 天玑900相当于麒麟多少处理器
  5. 基于Seq2Seq的中文聊天机器人编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制)
  6. Iphone死机怎么办?
  7. 不懂物理的前端不是好的游戏开发者(二)—— 物理引擎的学习之路
  8. 闲谈2016年一路走来
  9. “位格”和“三位一体”的解释
  10. PHP适合做大型网站吗?