分享

[原创]连接单元格内容的自定义函数

 Excel实用知识 2022-01-19
本帖最后由 香川群子 于 2012-3-5 12:34 编辑

我们可以使用&来连接不同单元格中的文字内容,
但是,如果单元格较多时,写入=a1&b1&c1……本身就令人讨厌。

下面自定义公式,解决了此问题,如果你需要经常这样处理数据的话。
第一可选参数InsWord,可以让你方便的在不同单元格的内容间插入间隔符号,如空格,或“-”,“&”等,默认为没有。
第二可选参数SN,可以让你决定各单元格取值的开始地方,默认为1;
第二可选参数SN,可以让你决定各单元格取值的长度,默认为原长度;

Function CN(Rng As Range, Optional InsWord = '', Optional SN = 1, Optional LN = 0)
    For i = 1 To Rng.Count
        If LN = 0 Then
            LNN = Len(Rng.Cells(i))
        Else
            LNN = LN
        End If
        CN = CN & InsWord & Mid(Rng.Cells(i), SN, LNN)
    Next
    CN = Right(CN, Len(CN) - Len(InsWord))
End Function

下面是函数功能进化,增加了:
插入参数='arr'时,可以自定生成VBA中直接可用的 arr = Array('a','b','c')的形式。即文本型数组。
插入参数='brr'时,可以自定生成VBA中直接可用的 arr = Array(1,2,3)的形式。即数值型数组。

  1. Function CS(Rng As Range, Optional InsWd = '', Optional SN = 1, Optional LN = 0) As String
  2.     If InsWd = 'arr' Then CS = 'arr = Array(''': InsWd = ''','''
  3.     If InsWd = 'brr' Then CS = 'arr = Array(': InsWd = ','
  4.     For i = 1 To Rng.Count
  5.         s = s & IIf(s <> '' And Len(Rng.Cells(i)) >= SN, InsWd, '') & Mid(Rng.Cells(i), SN, IIf(LN = 0, Len(Rng.Cells(i)), LN))
  6.     Next
  7.     If CS = '' Then CS = s Else If InsWd = ',' Then CS = CS & s & ')' Else CS = CS & s & ''')'
  8. End Function

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多