查找excel中不重复数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sub GetDistinctData()
'定义一个遍历范围cell
Dim cell As Range, res
'定义Dictonary对象dataCollection
Set dataCollection = CreateObject("Scripting.Dictionary")
'遍历A1到A500所有单元格
For Each cell In Range("A1:A500")
'假如单元格值不为空且dataCollection中未收录,则添加
If cell <> "" And (Not dataCollection.Exists(cell.Value)) Then dataCollection.Addcell.Value, CStr(cell.Value)
End If
Next
'从dataCollection中获取刚才过滤之后的数据
res = dataCollection.Items
'把数据不重复的写入B列
For i = 1 To dataCollection.Count
Cells(i, 2) = res(i - 1)
Next i
End Sub
不重复值的自定义函数方案
(转自网络)
提取不重复值的自定义函数方案,
Function MergerRepeat(Index As Integer, ParamArrayarglist() As Variant) '---------------------------------------------
’
’
’功能:获得指定单元格区域或数组中的不重复集合或值
’参数说明:
’Index:整型,当值小于1时,函数返回一个集合;
’大于1且小于不重复项的时,返回一个不重复的值
’大于不重复项时,返回空。
’a rglist():可为单元格区域或数组常量。
'----------------------------------------------
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,""},C2:C6))
教你使用Excel数组公式
Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。
输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。
选取数组公式所占有的全部区域先选中区域中任意一个单元格,然后按下Ctrl+/键即可。
编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边
的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的全部区域后,按Delete键即可删除数组公式。
数组常量的使用数组公式中还可使用数组常量,但必须自己键入花括号“{}”将数组常量括起来,并且用“,”和“;”分离元素。其中“,”分离不同列的值,“;”分离不同行的值。
使用不在工作表中的数组有时,公式仅占用一个单元格时也需要以数组的方式输入。其具体原则是:一个公式使用了数组,并且这个数组不在工作表上,就应该使用数组的方式输入这个公式。
下面介绍两个使用数组公式的例子。
1 有如图所示的工作表,需分别计算各商品的销售额,可利用数组公式来实现。
单元格F2中的公式为:{=SUM(IF(A2:A11=″商品1″,B2:B11*C2:C11,0))}.这个数组公式创建了一个条件求和,若在A2:A11中出现值“商品1”,则数组公式将B2:B11和C2:C11中与其相对应的值相乘并累加,若是其他值则加零。同时,虽然数组B2:B11和C2:C11均在工作表中,但其相乘的数组B2:B11*C2:C11不在工作表中,因此必须使用数组公式。
2 假设要将A1:A50区域中的所有数值舍入到2位小数位,然后对舍入的数值求和。很自然地就会想到使用公式:=ROUND(A1,2)+ROUND(A2,2)+…+ROUN D(A50,2)。
有没有更简捷的算法呢?有。因为数组ROUND(A1:A50,2)并不在工作表中,因此要使用数组的方式输入公式,即:{=SUM(ROUND(A1:A50,2))}.