EXCEL函数提取指定列不重复值到任意列且无空格
1、函数目的:在I列取G列的不重复值
完整函数:=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)))&"",””)
思路:判断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)))&"",””)
完毕。(转载请注明出处)