封面Excel和Wps通过输入要查找的值,把相同值查找出来并将结果展示。我们要用到的就是把重复值一项一项的提取出来并显示结果,下面通过利用嵌套INDEX()+SMALL()+IF()+ISNUMBER()+FIND()+ROW()函数公式来实现。
如下图所示,在J1单元格里输入张三,下面就得到张三的所有结果。
示例图1.通过上图,这个是一个一对多条件提取数据的查找。具体操作如下:
操作演示在I3单元格输入公式=IF($J$1="","",IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(FIND($J$1,$B$2:$B$20)),ROW($2:$20),""),ROW($A1))),"")),把公式向左拖动填充、向下拖动填充到合适位置。
2.公式详解如下:
(1)FIND($J$1,$B$2:$B$20)的意思是在B2:B20区域查找J1的值在哪一行出现,如果存在就提取这个值在单元格里的行位置数字,如果不存在就返回错误。如图所示:
图示(2)在FIND()函数外嵌套ISNUMBER(FIND($J$1,$B$2:$B$20))就是判断B2:B20区域哪些单元格是数字,如果是就返回True,不是就返回False。
(3)再通过IF(ISNUMBER(FIND($J$1,$B$2:$B$20)),ROW($2:$20),"")函数判断结果是否为True,是就提取True单元格所在内容对应的行号,否则就返回空值。
(4)用内存数组函数
SMALL(IF(ISNUMBER(FIND($J$1,$B$2:$B$20)),ROW($2:$20),""),ROW($A1))),把提取出来的行号从小到大进行排序,再按照顺序填入行里。
(5)最后通过
INDEX(A:A,SMALL(IF(ISNUMBER(FIND($J$1,$B$2:$B$20)),ROW($2:$20),""),ROW($A1))),根据行号来提取该列对应该行号的单元格内空。
(6)利用
IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(FIND($J$1,$B$2:$B$20)),ROW($2:$20),""),ROW($A1))),"")函数,对提取没有数据的错误值进行修正,没有值的显示空。
(7)在最外边用IF()函数先对J1单元格进行判断是否有输入值,如果没有公式区就显示空值。
查找重复值并提取重复值就是一个一对多的查找引用结果值。