EXCEL表格中,同一列中去重提取数据的方法:
由于提取时,需要将重复的仅提取一个出来,其它重复的部分是舍去的,所以对重复出现的,将第一次出现的那个提出来,而MATCH函数就是查找第一个符合条件的次序;
上图中,是个数组公式,即同时按Shift+Ctrl+Enter结束公式编辑,会自动生成一对{},可以看到首次出现的是TRUE、后来出现的是FALSE,就是要提取出值为TRUE的,所以为TRUE的返回行号,而为FALSE的返回4^8(即65536,取一个比较大的数,后续返回的这个大行号的值为空,照顾到2003版,最多只能有65536行,现在的版本可以放大些,但一般没这么多数据,此数足够了);
从该条件语句中可以看出,符合条件的都是小行号、不符的都是65536,只要将这些小行号提取出来即可,用SMALL函数来取第几小值:=SMALL(IF(MATCH($A$1:$A$10,$A$1:$A$10,0)=ROW($1:$10),ROW($1:$10),4^8),ROW(1:1))
再用函数INDEX返回A列的值:=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$10,$A$1:$A$10,0)=ROW($1:$10),ROW($1:$10),4^8),ROW(1:1)));
但此时发现后面多了些0,原来EXCEL对空单元默认是返回0,可以在公式后,加个&"":=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$10,$A$1:$A$10,0)=ROW($1:$10),ROW($1:$10),4^8),ROW(1:1)))&"",这样返回的就是文本格式,空单元依然返回空单元,这也是为什么用4^8的原因,正常不会跑到最后一行去输入数据,所以A65536这个单元格正常是空单元。
在B1中输入公式:=COUNTIF(A:A,A1)
并将该公式下拉复制到B列的其他单元格当中
则B列数值不等于1的就是重复的
用筛选就可以筛选出来
注:用这种方法要求A列数值中不能有多余的空格