index一对多查询并提取?一对多匹配并全部显示出来
各位老铁们,大家好,今天由我来为大家分享index一对多查询并提取,以及一对多匹配并全部显示出来的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
excel如何实现一对多提取
对Excel表中数据一对多查询的方法
举个例子,如下图,左侧A1:C10是一份学员名单表,现在需要根据F1单元格的“EH图班”这个指定的条件,在F2:F10单元格区域中,提取该班级全部学员名单。
今天说一个函数查询方面的方法:Index+Small。
F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充:
=INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),"")
公式讲解
IF(A$1:A$10=F$1,ROW($1:$10),4^8)
这部分,先判断A1:A10的值是否等于F1,如果相等,则返回A列班级相对应的行号,否则返回4^8,也就是65536,一般情况下,工作表到这个位置就没有数据了。
结果得到一个内存数组:
{65536;2;3;65536;65536;65536;65536;8;65536;10}
SMALL函数对IF函数的结果进行取数,随着公式的向下填充,依次提取第1、2、3……n个最小值,由此依次得到符合班级条件的行号。
随后使用INDEX函数,以SMALL函数返回的行号作为索引值,在B列中提取出对应的姓名结果。
当SMALL函数所得到的结果为65536时,意味着符合条件的行号已经被取之殆尽了,此时INDEX函数也随之返回B65536单元格的引用,结果是一个无意义的0,为了避免这个问题,可以在公式后面加上一个小尾巴&""
利用&””的方法,很巧妙的规避了无意义0值的出现,只是当查找结果为数值或日期时,这个方法会把数值转变为文本值,并不利于数据的准确呈现以及再次统计分析。
练手题
最后留下一道练手题,如下图,根据A1:C10区域的数据,将E列相关班级的姓名,填充到F2:I5区域。
excel如何查找一个值对应的多个值
1.在原始数据中A列有多个“张三丰”,需要提取每个“张三丰”对应的“工号”。
2.一般情况的VLOOKUP只能返回第一个值,如下:
=VLOOKUP(A8,A1:D5,2,0)。
3.在【姓名】列前插入一列,如下图输入公式:
=COUNTIF(B$2:B2,B2)
这个公式返回每个“姓名”从上到下是第几次出现,如第二个“张三丰”标记2。
4.将A2公式改成:
=B2&COUNTIF(B$2:B2,B2)
这样就将B列的“姓名”和出现次数连在一起。
5.在B8输入公式:
=A8&ROW(A1)
将A8值和ROW(A1)返回的1连在一起,下拉ROW(A1)会变成ROW(A2)返回2。
6.将B8的公式修改成如下:
=VLOOKUP(A$8&ROW(A1),A$1:E$5,3,0)
也就是在A1:E5范围内查询“张三丰”和出现次数的文本对应第3列的【工号】。
7.将公式下拉,就将所有“张三丰”对应的信息查询出来了。
好了,文章到这里就结束啦,如果本次分享的index一对多查询并提取和一对多匹配并全部显示出来问题对您有所帮助,还望关注下本站哦!