EXCEL自定义字符连接函数可接受内存数组及各类型混合参数

EXCEL的工作表函数做字符连接极不方便 就是vba的join局限性也很大为此学习借鉴整理了一个字符连接通用函数,可接受不同类型参数,单元格区域,数组以及单个参数可随意混合组合传入输出结果可跳过空值,可指定分隔符,在需要大量字符串连接的时候,可以方便的调用以剩下时间专注于业务逻辑,这个函数我在sql中用作构造 表.z字段非常好用已知了表头 和表名 表1构造一个表名与字段的连接 字符串用这个极其方便字段1字段2字段3字段4字段5字段6字段7字段8字段9debug.Print [ConTxt(",","[表1$]." &A1:D1,"[表2$.]" &E1:I1)]直接可得到以下结果[表1$].字段1,[表1$].字段2,[表1$].字段3,[表1$].字段4,[表2$.]字段5,[表2$.]字段6,[表2$.]字段7,[表2$.]字段8,[表2$.]字段9当然还有其他很多好用的地方 希望能帮到有需要的人工作表中使用实例

代码如下 未严格测试 若有错漏欢迎指正12345678910111213141516171819202122232425262728293031323334353637383940'———–Sub ConTxt———-Copyright@百度不到去谷歌 QQ80871835 2014/4/15—————————'功能 : 高级合并文本函数,结果返回一个参数合并后的字符串,忽略空值'使用第一参数做为分隔符,可接受数组参数'变量 : Dilimitetr 分隔符' args 源数据,可接受多个参数及数组参数,以及他们的混合'———————————————————————————————————Function ConTxt(Dilimitetr$, ParamArray Args() As Variant) As Variant'第一参数为分隔符,后续会可选多区域多类型,空值将被忽略'可传递内存数组参数Dim tmptext As Variant, i As Variant, cellv As VariantDim cell As Rangetmptext = ""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 <> "" Thentmptext = tmptext & Dilimitetr & cellEnd IfNext cellCase "()"  '数组类型,For Each cellv In Args(i)If cellv <> "" Then tmptext = tmptext & Dilimitetr & cellvNext cellvCase Else '其他类型,即单个值参数If Args(i) <> "" Then tmptext = tmptext & Dilimitetr & Args(i)End SelectEnd IfNext iConTxt = Mid(tmptext, Len(Dilimitetr) + 1) '去掉开头多余分隔符End FunctionPublic Sub test()Dim a As Varianta = Split("1 2 3 4", " ")Debug.Print ConTxt(",", 0, a, "12")Debug.Print ConTxt(",", [D1:D10])Debug.Print ConTxt(",", 1, 2, "阿斯顿")End Sub原文地址:http://www.toutiao.com/i6350027760596943362/

(0)

相关推荐