查找excel中不重复数据

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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))}.

相关文档
最新文档