利用Dictionary对象处理EXCEL重复值

对于EXCEL的重复值这个问题,比较普通,OFFICEBA曾经发过一文章:让Excel 2007来筛选唯一值或删除重复值讨论过,今天再来说说利用Dictionary对象处理EXCEL重复值

先编写一个函数来达到处理EXCEL重复值的功能,然后就应用到实例当中。

Function MergerRepeat(Index As Integer, ParamArray arglist() As Variant)
'*******************************************
'功能:获得指定单元格区域或数组中的不重复集合或值
'参数说明:
'Index:整型,当值小于1时,函数返回一个集合;
'    大于1且小于不重复项的时,返回一个不重复的值
'    大于不重复项时,返回空。
'arglist():可为单元格区域或数组常量。
'发布:http://www.officeba.com.cn
'*******************************************
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、利用此函数能返回某区域中不重复值的数量,以B1:B10为例

在单元格中输入公式:=COUNTA(MergerRepeat(0,B1:B10))

回车即有

2、利用此函数返回不同单元格不重复值比较

例如在C列从C1格开始列出B1:B10的不重复数值。

在C1格中输入公式:=MergerRepeat(ROW(),$A$1:$A$10)

并向下填充。

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

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

虽然此函数对于处理大量数据来说效率不高,但还算很不错了。大家可以在此基础上编写更加完善的函数进行完善别忘了和大家分享哦

时间: 2024-09-11 14:24:37

利用Dictionary对象处理EXCEL重复值的相关文章

jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动

 这篇文章主要介绍了jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动,需要的朋友可以参考下 利用struts2和Ajax实现json对象的传输,然后实现菜单的二级联动    下面是我的 js文件原码:   代码如下: var mail={  //初始化  init:{  //初始化数据  initdata:{  did:'',  ttitle:'',  sendpassword:'',  description:''  },  //初始化事件  initevent:{  Da

如何使用函数公式筛选Excel重复值

  1.打开Excel表格,在D1单元格输入=COUNTIF(C$1:C1,C1) 2.接着根据目前的重复量显示相应的数字,目前没有重复所以显示的是1 3.接着下拉填充公式 4.这个时候我们就会发现有重复的数值会根据不同的重复量显示不同的数字,是不是很方便呢?

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

关于如何提取Excel不重复值的自定义函数,提取不重复数值的话题,在Excel中是一个很常见的话题,本站也收集了几个关于用公式解决的几种方法:在此达到抛砖引玉的效果,如果有不对的,希望大家指正,我好及时修改!下面我来详细介绍一下: 完整代码如下: Function MergerRepeat(Index As Integer, ParamArray arglist() As Variant) --------------------------------------------- '时间:200

提取Excel不重复值的自定义函数方案

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

Excel中提取指定条件的不重复值的方法

  Excel中提取指定条件的不重复值的方法          话说某单位国庆员工文体活动安排,不同的员工参加有不同的项目. 现在需要看看美女小丽一共参加了几个项目. 也就是提取B列等于指定姓名的.C列不重复项. 如果用函数提取,公式会是这样的: =INDEX(C:C,SMALL(IF((MATCH(C$2:C$12&B$2:B$12,C$2:C$12&B$2:B$12,)=ROW($1:$11))*(B$2:B$12=E$2),ROW($2:$12),999),ROW(A1)))&

excel表格如何标识重复值

  excel标识重复值步骤如下: 1.首先打开需要查找重复内容的表格. 2.这里查找H列是否有重复的内容: 从有内容的地方开始选中,直到最后一行,我这里是8748行,有内容的行是第六行,也就是h6到h8748. 3.点击:格式--->条件格式.(H6-H8748的状态还是被选中哦!) 在条件格式的窗口中选择条件为"公式". 4.在公式输入框中输入: =COUNTIF($h$6:$h$8748,$h2)>1 PS:如果你选择的是C列,内容是从第2列到1000列,那么可以根据

在Excel 2010中如何高亮显示重复值

若想高亮度显示某一数据区域的重复值,可以使用 Excel 2010 中的条件格式得以实现.具体操作方法如下: 选择数据区域,如实例中货品编号所在的 A2:A13 区域. 从"开始"选项卡中选择"条件格式",并点击"新建规则". 选择"仅对唯一值或重复值设置格式",确认已选中"重复",即针对所选数据区域中的重复值设置相应格式. 点击上图中右下角"格式"按钮,并设置高亮度显示颜色,如将背景填

Excel剔除单列数据的重复值五种方法介绍

  有时我们在操作数据时,需要剔除单列数据的重复值,下面小编为大家介绍Excel剔除单列数据的重复值五种方法,满足大家的日常需求. 方法一:菜单按钮 如下图,是本次操作的源数据. 单击"数据"选项卡-->"数据工具"功能区-->"删除重复项",弹出"删除重复项"对话框,单击"确定"即可删除单列数据 重复值.如下图所示: 方法二:数据透视表法 依然使用上面的数据源,单击"插入"

如何防止在Excel一列中输入重复值?

1.先打开要处理的excel文件,我们把要限制重复项的列先选中,如图所示. 2.然后我们找到"菜单栏-数据-数据有效性"如图会弹出数据有效性对话框.   3.然后点击设置选项卡,其默认有效条件-允许为任和值.下拉允许(A)列表,选择自定义.同时,在公式一行中输入=COUNTIF($C$2:$C$27,C2)<2 具体数据根据个人选中区域而定. 4.最后再点击返回到Excel工作表当中.在即将输入数据的单元格C14中,尝试输入C13的内容 现在我们尝试输入重复值是不是提示非法数值啊