查看: 22  |  回复: 0
  VBA代码 高级字符串合并
楼主
发表于 2025年3月18日 15:34
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


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2025 MaNongKu.com