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这个单元格正常是空单元。