Excel一对多查询的函数组合index、small、row


Excel一对多查询的函数组合index、small、row

这是我拟的一个一对多的查询,我只知道一个人的名字,但是不知道有多少科目和分数,对于一对一的查询相信大家都没问题,vlookup、index、lookup等等,很多函数都能实现 , 但是像简单vlookup函数,默认的查询结果是找到的最靠上的那个结果,查询张斌的话,结果只有英语86,其他的科目是查不到的 。
所以对于一对多我们需要转换思路了 , 标题中的index、small、row就可以很好的解决这个问题,这也是很多教程中提到的一个方法,我最早使用应该是十年前了,为了实现银行账与企业账找出的差异自动填到银行余额调节表中 。
我们对上面的例子先把公式展示出来,我们在F4中输入了如下的公式:{=INDEX(B$1:B$19,SMALL(IF($A$2:$A$19=$E$4,ROW($A$2:$A$19)),ROW(A1)))} , 我们可以看到最外面是个大括号,我很直观的看到他是一个数组公式,然后向下,向右进行复制,我们就可以得到我们所需要的结果 。
公式看着有点复杂,但理解起来就没那么复杂了,这里最关键的用法,我认为是row函数 , row函数是一个显示行号的函数,我们设置为相对引用的情形下,如row(A1)=1,向下复制时变为row(A2)=2,small函数有个特点,计算最小值时忽略逻辑值TRUE和FALSE以及文本型数字,small在这里是数组的用法,我虚拟了下显示结果,当然我们是看不到的:
Excel一对多查询的函数组合index、small、row



我们的结果就只剩下7行、8行、10行了,其他的由于是错误,直接就被small忽略了,我们在的数组就是{英语,数学、语文} , {86,78、73},通过最后一个参数来获得数组提取的位置1,2,3 , 我们就可以将英语86,数学78,语文73提取出来了 。
【Excel一对多查询的函数组合index、small、row】如果喜欢我的文章,欢迎关注我的微信公众号:跟我学EXCEL图表

相关经验推荐