Excel表格自定义函数你会用吗
- 2026-09-26 04:46:35

分享一个自定义函数,虽然3句代码,但很方便!
希望能在需要的时候助你一臂之力!
[注]:此代码需要放在标准模块里。
合并文本的函数:

代码解析:
\\'↓合并字符串
\\'Rng:单元格区域 ,JoinStr:用什么符号连接文本
\\'WorksheetFunction.Transpose 工作表函数 将二维数组转一维
\\'VBA.Join 用于合并字符串(合并的一维数组,用什么连接)
\\'FunJoin 函数名 = 结果 【必须】
Function FunJoin(Rng As Range, JoinStr AsString)
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文档替换段落标记完成(相对简单)。