IT编程技术

天行健,君子以自强不息;地势坤,君子以厚德载物;

ExcelVBA实战【第一期】-合并单元格内的所有字符用逗号分隔

2021-1-23 博主:Splendor EXCEL VBA实战

【合并单元格内的所有字符用逗号分隔】
分析:1,首先我们要解决数据的获取
          2,获取后如何用最少的代码实现把数据加上分隔符号
          3,考虑是否可以不用循环的方式


1.PNG

效果:
1gif.gif

代码:
Public Sub getMergeString()
    arrData = Range("A2:F2").Value
    arrData = Application.Index(arrData, 1, 0)
    strMerge = Join(arrData, ",")
    Range("G2").Value = strMerge
End Sub

思路:
      本实例中用了两个关键的函数index,和join实现了这个功能,节省了很多的代码量,循环这样的写法虽然也可以实现但代码比本方法解决过于码量过多。
1,本例首先用Range("A2:F2").Value获取A2:F2的所有数据赋值给数组arrData(用本方法获取数组为2维数组)
2,为什么要用index这个函数对数组操作,因为join在快速给字符串加分隔符时,第一个参数必须为1维数组,所以要对获取arrdata进行降维转换把二维转成一维,如果不用本函数你可能会实用循环方法这样就会增加代码量(在编程时一定要保持一种用最少的代码达到最终目的思维,对你的编程之路是有帮助的)
3,application.index(取2维数组里的某1列,某1行)函数有三个参数(第一个参数为数组,第二个参数为int型代表要获取的行,第三个参数为int型代表要获取的列数)
     
Application.Index(arrData, 1, 0) 本句代码的意思就是,提取arrData二维数组的,第一行数据
4,Join(返回一维数组元素连接组合成的字符串,把一维数组中的值为别加上指定符号分隔)函数有两个参数Join(一维数组,分隔的字符),只要你把相应的参数放入函数那么函数就会给你返回结果。

思考作业:
    这个时候会一些VBA朋友可能会问,利用Application.WorksheetFunction.Transpose转置函数不能把二维数组转换成一维吗?大家可以试试,留言讨论

本实战文件:
合并单元格内的所有字符用逗号分隔.zip

标签: ExcelVBA实战