officeba > 单独文章


关于如何提取Excel不重复值的自定义函数

关于如何提取Excel不重复值的自定义函数,提取不重复数值的话题,在Excel中是一个很常见的话题,officeba也收集了几个关于用公式解决的几种方法:在此达到抛砖引玉的效果,如果有不对的,希望大家指正,我好及时修改!下面我来详细介绍一下:

完整代码如下:

Function MergerRepeat(Index As Integer, ParamArray arglist() As Variant)
---------------------------------------------
'时间:2008-12-26
'理整:宇 bengdeng
'功能:获得指定单元格区域或数组中的不重复集合或值
'参数说明:
'Index:整型,当值小于1时,函数返回一个集合;
'       大于1且小于不重复项的时,返回一个不重复的值
'       大于不重复项时,返回空。
'arglist():可为单元格区域或数组常量。

----------------------------------------------
Dim NotRepeat As Object, tStr As String
Set NotRepeat = CreateObject("Scripting.Dictionary")
For Each arg In arglist
    For Each rRan In arg
        If TypeName(rRan) = "Range" Then
            If rRan.Value <> "" Then NotRepeat(rRan.Value) = 0
        Else
            NotRepeat(rRan) = 0
        End If
    Next
Next
If Index < 1 Then
    MergerRepeat = NotRepeat.keys
ElseIf Index <= NotRepeat.Count Then
    arr = NotRepeat.keys
    MergerRepeat = arr(Index - 1)
Else
    MergerRepeat = ""
End If
End Function

下面用几个应用的实例,来说明该函数的应用。

1、返回A1:A10中不重复值的个数。

=COUNTA(MergerRepeat(0,A1:A10))

2、在B列从B1格开始列出A1:A10的不重复数值。

在B1格设定公式:

=MergerRepeat(ROW(),$A$1:$A$10)

并向下填充。

3、求多个区域(可以不连续)加数组的不重复个数。

=COUNTA(MergerRepeat(0,A1:A6,{"abc","Excel吧",1,"excelba.com"},C2:C6))

上面已经完全阐述了这个方法的使用,大家看了之后可以结合实践来验证一下我的思路,如果有朋友认为好,转载了,请你注明你的文章来源于officeba.com.cn,谢谢,我以后会提供更多更好的文章给大家!


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2008-12-28 14:25:35,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容