欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > Excel函数CUnique连接合并指定区域的唯一值

Excel函数CUnique连接合并指定区域的唯一值

2025/2/24 19:36:26 来源:https://blog.csdn.net/bigtoothcat/article/details/143453436  浏览:    关键词:Excel函数CUnique连接合并指定区域的唯一值

       上一篇文章向大家介绍了如何使用VBA在低版本Excel中创建unique函数的方法,今天我跟大家分享一下如何使用函数连接指定区域的唯一值,也就是将unique函数获取的唯一值连接合并成一个,并指定连接符。

        同样,我们需要先创建一个自定义的ConcatenateUnique函数,简称CUnique函数,该函数有两个参数,一个是定义范围,一个是定义连接符。

        使用方法如下:

        例:=CUnique(C1:C7,",") ,计算结果如下图。

        VBA创建CUnique函数的代码如下:

Option Explicit
Function CUnique(ByRef rngRange As Range, Optional ByVal Seperator As String = " ", Optional ByVal Format As String = "@", Optional ByVal CaseSensitive As Boolean = False) As String
' 连接指定区域的唯一值,并指定连接符。Dim rng As RangeDim strAnswer As StringDim strTemp As StringDim CompMethod As VbCompareMethod'为InStr函数设置文本比较模式If CaseSensitive ThenCompMethod = vbBinaryCompareElseCompMethod = vbTextCompareEnd IfFor Each rng In rngRangestrTemp = rng.Value'仅处理非空单元格If Not strTemp = vbNullString Then'应用格式strTemp = Application.WorksheetFunction.Text(strTemp, Format)'首先初始化结果字符串, 然后合并If strAnswer = vbNullString ThenstrAnswer = strTempElse'仅合并唯一值If InStr(1, Seperator & strAnswer & Seperator, Seperator & strTemp & Seperator, CompMethod) = 0 ThenstrAnswer = strAnswer & Seperator & strTempEnd IfEnd IfEnd IfNext rng'返回结果字符串CUnique = strAnswer
End Function

        此外,我们还可以创建JoinUnique函数来实现这一效果,简称JUnique函数,使用方法跟CUnique函数相同。

        使用方法如下:

        例:=JUnique(C1:C7,",") 

        VBA创建JUnique函数的代码如下:

Option Explicit
Function JUnique(rng As Range, del As String) As String
' 连接指定区域的唯一值,并指定连接符。Dim d As ObjectSet d = CreateObject("scripting.dictionary")Dim r As RangeDim str As StringFor Each r In rngstr = r.Value'仅处理非空单元格If Not str = vbNullString Thend(r.Text) = ""End IfNextJUnique = Join(d.keys, del)
End Function

        JUnique函数的代码比较简洁,但计算速度较CUnique函数慢一些,大家可以根据具体需要选择使用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词