分享

自定义函数【合并|分割】文本

 L罗乐 2018-12-08

希望能在某些时候祝你一臂之力!

[注]:此代码需要放在标准模块里。


合并文本的函数:


代码解析:

'↓合并字符串

'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文档替换段落标记完成(相对简单)。


图文制作:赵中山

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多