希望能在某些时候祝你一臂之力! [注]:此代码需要放在标准模块里。
合并文本的函数:
代码解析: '↓合并字符串
'Rng:单元格区域 ,JoinStr:用什么符号连接文本 'WorksheetFunction.Transpose 工作表函数 将二维数组转一维 'VBA.Join 用于合并字符串(合并的一维数组,用什么连接) 'FunJoin 函数名 = 结果 【必须】
Function FunJoin(Rng As Range, JoinStr As String) Dim Arr Arr = WorksheetFunction.Transpose(Rng)
'↓VBA.Join 可以理解为 将一维数组的内容连接起来
'arr 要连接的一维数组
'JoinStr 用什么字符来连接
FunJoin = VBA.Join(Arr, JoinStr) End Function
分割字符串:
代码解析:
'↓分割字符串 'Rng 要分割单元格 选择单元格要绝对引用 'Rng2 要填充的单元格 取该单元格的行 有用处 'SplitStr 以什么字符分割 'vba.Split 字符串分割(要分割的字符串,以什么字符分割)返回一维数组 'FunSplit 函数名=结果
Function FunSplit(Rng As Range, Rng2 As Range, _ SplitStr As String) Dim Arr '↓字符串分割返回一维数组 ’rng :绝对引用的单元格
' Splist 以什么字符分割 如、
Arr = VBA.Split(Rng, SplitStr) '↓返回arr一维数组中的第几个
'这里用分割单元格的下一行 减去 要分割的单元格(绝对引用)的行
'向下填充依次是 0 1 2 3 ……
FunSplit = Arr(Rng2.Row - Rng.Row)'纵向填充 'FunSplit = Arr(Rng2.Column - Rng.Column) '横向填充 End Function
优化技巧(1):
灵活运用,横向填充: Function FunSplit(Rng As Range, Rng2 As Range, _ SplitStr As String) Dim Arr Arr = VBA.Split(Rng, SplitStr) '↓横向填充 FunSplit = Arr(Rng2.Column - Rng.Column) End Function
优化技巧(2):
灵活运用,横纵填充: 代码解析: Function FunSplit(Rng As Range, Rng2 As Range, _ SplitStr As String) Dim Arr Arr = VBA.Split(Rng, SplitStr) If Rng.Row = Rng2.Row Then'
'↓横向填充 FunSplit = Arr(Rng2.Column - Rng.Column) Else FunSplit = Arr(Rng2.Row - Rng.Row)'纵向填充 End If End Function
'工作表函数(也可以理解为vba版的Excel函数)与vba代码有机结合,也许会更方便。
'[合并|分割]文本的方法很多,可以用Excel自带函数完成(可能会很复杂)、也可以用Word文档替换段落标记完成(相对简单)。
图文制作:赵中山
|