• <tr id="5e6658b7"><strong id="208b07b5"></strong><small id="72a5e1cf"></small><button id="1a4cfd4a"></button><li id="19c28495"><noscript id="61da19fa"><big id="7636b984"></big><dt id="73ab71f0"></dt></noscript> </tr><ol id="42dbf9ef"><option id="49cca458"><table id="1067eb6b"><blockquote id="67ae06d5"><tbody id="4381e01b"></tbody></blockquote></table></option></ol><u id="2cff3828"></u><kbd id="42c7c0ea"><kbd id="32cf355a"></kbd></kbd>
  • 千赢国际教程下载和软件下载中心,Microsoft技术社区联盟成员,全球极具影响力的千赢国际门户,Office技术培训社区

    一对多查询的万金油公式

    2019-01-06  作者:千赢国际Home  阅读:
    我们对数据进行查询时,经常会使用VLOOKUP函数。但有时,我们会碰到这样的问题,提取符合条件的结果是多个千赢老虎机,而不是一个,这时候VLOOKUP就犯难了。
    举个例子,如下图,左侧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))),"")
    这个公式看起来可就比上面那个VLOOKUP的解法苗条养眼多了,坦白的说,很搭俺星光十年后的匪号——小清新。
    公式讲解
    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值的出现,只是当查找结果为数值或日期时,这个方法会把数值转变为文本值千赢老虎机,并不利于数据的准确呈现以及再次统计分析。

    转载请注明来源"千赢国际Home"并保留原文链接。
    固定链接:http://ryansdrew.com/lesson/article/excel/1931.html
    分享到:
    Copyright 1999 - 2017 千赢国际 Home.All Rights Reserved.
    本站特聘法律顾问:徐怀玉律师 李志群律师   沪ICP备11019229号
           
    网站地图