在一个多行多列的区域中,有大量的数据,其中许多是重复的。如果想显莲镘拎扇示出各数据的重复出现次数,是一件比较麻烦的事情,如果数据都分布在同一列中还好办,在多坐逃缥卯列中就不方便了。一般的做法是把所有列中的数据分别复制,再分别粘贴到同一个列中,依次向下排列,然后对这一列使用“高级筛选-选择不重复记录”,再用COUNTIF函数统计重复次数。如果使用一段VBA代码来做,就会非常快捷,一瞬间就会将统计结果显示出来。
步骤/方法
1、第一步:准备数据
2、下面是一个例子,假设数据在Sheet1工作表中:
3、例中只用了四列数据,实际使用时可对更多的列进行操作,只要在代码中改变一个变量的值就行了。用鼠标右键点当前工作表下面的标签名,选右键快捷菜单中的“查看代码”。
4、第二步:编写代码
5、这时就弹出VBA窗口,将下面代码复制后,粘贴到VBA窗口中,点击“执行”后即可得到统计结果。
6、Sub统计()y1=1'开始列为A列(在EXCEL中,A列的列号僭轿魍儿为1)y2=4'结束列为D列(在EXCE讣嘬铮篌L中,D列的列号为4)x=2n1=255'辅助列n2=y2+2'结果显示列,结果显示在源数据列的右侧,中间间隔一列。Fori=y1Toy2s=Cells(65536,y1).End(xlUp).Row'各列数据的数量Range(Cells(1,i),Cells(s,i)).CopyCells(x,n1)'把所有数据复制到辅助列中x=x+sNextCells(1,n1)="数据":Cells(1,n2+1)="次数"'使用“高级筛选”功能将不重复数据显示在“结果显示列”中Columns(n1).AdvancedFilter2,,Cells(1,n2),1s1=Cells(65536,n2).End(xlUp).Row'下面代码用COUNTIF函数统计重复次数Fori=2Tos1Cells(i,n2+1)=WorksheetFunction.CountIf(Columns(n1),Cells(i,n2))Next'消除辅助列内容Columns(n1)=""EndSub
7、代码中的含义已经做了批注,大致意思是:将源数据复制到一个辅助列中,对这个辅助列使用高级筛选,得到不重复的数据,使用COUNTIF函数进行统计计数,得到各数据的重复出现次数,最后删除辅助列内容。
8、上面代码的执行方法分两种情况,一种是在EXCEL窗口执行,另一种是在VBA窗口执行。
9、在EXCEL窗口时,以EXCEL2003版为例,按“工具-宏-宏”,会出现宏窗口对腑尸倚匝话框,在其中选择“统计”宏(就是我们的代码名字),确定即可执行。还可给这个宏指定一个快捷键,通过快捷键来执行代码。
10、在VBA窗口时,可用鼠标点击工具栏上的执行按钮(上图红圈中的向右三角按钮),也可点击工具栏上的“运行”,选“运行子过程”。还可按键盘最上方的F5功能键来快速执行代码。
11、下图是运行代码后的效果: