|
本帖最后由 百度不到去谷歌 于 2014-4-15 13:35 编辑
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, 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
复制代码
VBA-自定义字符连接函数.rar
(15.71 KB, 下载次数: 397)
|
评分
-
2
查看全部评分
-
|