提取不重复值,通过筛选、数据透视都可实现。但要制作EXCEL模板,自动得到结果,以上方法就不可取了,因为需要使用人后续操作。结合大牛经验,整理了一份函数方法,分享给大家。
工具/原料
EXCEL2007及以上版本
方法/步骤
1、函数目的:在I列取G列的不重翱务校肢复值完整函数:=IFERROR(INDEX(G:G,SMALL(IF(MATCH($G$1:$G$6,$G$1:$G$6,)=ROW($G$1:$G$6),RO友腆取缜W($G$1:$G$6),4^8),ROW(G1)))&"",””)思路:判断G列数据的行号,若为重复行号,则取个极大值,然后把结果排序;用INDEX函数+行号,把值取出。(数组函数Ctrl+Shift+Enter)
2、1.用MATCH函数,可以取得相应值得行号。待查找值G1:G6,查找范围G1:G6,找到后范围对应数据的行号。对应函数:MATCH($G$1:$G$6,$G$1:$G$6,)得到结果:{1,2,2,2,5,6}
3、2.由第峥廖炅于我们需要的行号是1,2,5,6;那么就需要把另外的两个2,忽略掉。这时需要引入IF、ROW、SMALL函数。ROW函数,ROW(G1),往下拖公式时,会得到结果1,2,3,4,5荑樊综鲶,6--------n;用IF函数,判断MATCH的结果,与ROW的结果,若相同取ROW的结果,若不同,返回一个极大的数字,如4^8;对应函数:(IF(MATCH($G$1:$G$6,$G$1:$G$6,)=ROW($G$1:$G$6),ROW($G$1:$G$6),4^8)用SMALL函数+ROW函数,将取得的行号的数字组合,从小到大排序,(这里为了函数更容易理解,把SMALL公式中,范围的部分,直接写成得到的列数的数组了),如:SMALL({1,2,4^8,4^8,5,6,},ROW(G1)),得到结果{1,2,5,6,4^8,4^8}对应函数:SMALL(IF(MATCH($G$1:$G$6,$G$1:$G$6,)=ROW($G$1:$G$6),ROW($G$1:$G$6),4^8),ROW(G1))
4、3.然后通过INDEX函数,把G列的值取出来对应函数:INDEX(G:G,SMALL(IF(MATCH($G$1:$G$6,$G$1:$G$6,)=ROW($G$1:$G$6),ROW($G$1:$G$6),4^8),ROW(G1)))
5、4.为了避免出现0值和错误值影响美观,在函数后面加上&””,在函数外面套上IFERROR(已有函数,””)对应函数:=IFERROR(INDEX(G:G,SMALL(IF(MATCH($G$1:$G$6,$G$1:$G$6,)=ROW($G$1:$G$6),ROW($G$1:$G$6),4^8),ROW(G1)))&"",””)完毕。(转载请注明出处)