分享一个自定义函数,虽然3句代码,但很方便!
希望能在需要的时候助你一臂之力!
[注]:此代码需要放在标准模块里。
合并文本的函数: 代码解析:
分割字符串: 代码解析:
优化技巧(1): 灵活运用,横向填充:
优化技巧(2): 灵活运用,横纵填充: 代码解析:
'工作表函数(也可以理解为vba版的Excel函数)与vba代码有机结合,也许会更方便。 '[合并|分割]文本的方法很多,可以用Excel自带函数完成(可能会很复杂)、也可以用Word文档替换段落标记完成(相对简单)。 图文制作:赵中山
合并文本的函数: 代码解析:
'↓合并字符串 '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文档替换段落标记完成(相对简单)。 图文制作:赵中山