微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
Excel的工作表函数做字符连接极不方便 就是vba的join局限性也很大
为此学习借鉴整理了一个字符连接通用函数,可接受不同类型参数,单元格区域,数组以及单个参数可随意混合组合传入
输出结果可跳过空值,可指定分隔符,在需要大量字符串连接的时候,可以方便的调用
以剩下时间专注于业务逻辑,这个函数我在sql中用作构造 表.z字段非常好用
已知了表头 和表名 表1构造一个表名与字段的连接 字符串用这个极其方便
字段1 | 字段2 | 字段3 | 字段4 | 字段5 | 字段6 | 字段7 | 字段8 | 字段9 |
debug.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
当然还有其他很多好用的地方 希望能帮到有需要的人
工作表中使用实例
代码如下 未严格测试 若有错漏欢迎指正
'———–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 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, Len(Dilimitetr) + 1) '去掉开头多余分隔符 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