当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
计算机一级复习:利用Dictionary对象处理EXCEL重复值
发布时间:2009/11/25 15:27:32 来源:城市学习网 编辑:admin
  对于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))
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved