美文网首页
INdex+Small

INdex+Small

作者: Python_学徒 | 来源:发表于2022-10-18 08:04 被阅读0次

    今天说一个函数查询方面的万金油套路:Index+Small。

    F2单元格输入以下数组公式,按住Ctrl+Shift键不放,再按回车键,然后向下填充:

    =INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1))),"")

    这个公式看起来可就比上面那个VLOOKUP的解法苗条养眼多了,坦白的说,很搭俺星光十年后的匪号——小清新。

    1、公式讲解

    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值的出现,只是当查找结果为数值或日期时,这个方法会把数值转变为文本值,并不利于数据的准确呈现以及再次统计分析。

    2、练手题

    最后留下一道练手题,如下图,根据A1:C10区域的数据,将E列相关班级的姓名,填充到F2:I5区域。

    相关文章

      网友评论

          本文标题:INdex+Small

          本文链接:https://www.haomeiwen.com/subject/slyttltx.html