Function ConTxt(Dilimitetr$, ParamArray Args() As Variant) As Variant
'功能 : 高级合并文本函数,结果返回一个参数合并后的字符串,忽略空值,使用第一参数做为分隔符,可接受数组参数
'变量 : Dilimitetr 分隔符
' args 源数据,可接受多个参数及数组参数,以及他们的混合
'第一参数为分隔符,后续会可选多区域多类型,空值将被忽略
'可传递内存数组参数
Dim tmptext As Variant, i As Variant, cellv As Variant
Dim cell As Range
tmptext = ""
For i = 0 To UBound(Args) '遍历参数数组
If Not IsMissing(Args(i)) Then '判断参数是否有效
Select Case Right(TypeName(Args(i)), 2) '对不同的参数类型采取不同的处理方式,数组类型可能有多种类型,所以判断最后一个字符
Case "ge" 'Range单元格区域类型,直接遍历
For Each cell In Args(i)
If cell <> "" Then
tmptext = tmptext & Dilimitetr & cell
End If
Next cell
Case "()" '数组类型,
For Each cellv In Args(i)
If cellv <> "" Then tmptext = tmptext & Dilimitetr & cellv
Next cellv
Case Else '其他类型,即单个值参数
If Args(i) <> "" Then tmptext = tmptext & Dilimitetr & Args(i)
End Select
End If
Next i
ConTxt = Mid(tmptext, 2) '去掉开头多余分隔符
End Function
Public Sub test()
Dim a As Variant
a = Split("1 2 3 4", " ")
Debug.Print ConTxt(",", 0, a, "12")
Debug.Print ConTxt(",", [D1:D10])
Debug.Print ConTxt(",", 1, 2, "阿斯顿")
End Sub