咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

日常工作中,我们需要在一个表格中匹配另一个表格的数据。如果条件是唯一的情况下,我们通常可以用vlookup或者index+match函数可以进行查询匹配。但如果条件不唯一呢?比如下表,用上面的函数就只能匹配到第一个结果,导致数据匹配错误。

解决思路:用if函数+数组公式返回所有匹配的结果的行号,再用small+countif函数依次(从小到大)获取其中一个行号,再用index函数获取相应的结果。

第一步:用if函数+数组公式返回所有匹配的结果的行号数组(序列),注意条件区域要使用绝对引用,因为是数组公式,输入完毕按ctrl+shift+enter。


然后我们在单元格中看到的结果都是false,这是显示数组公式的最后一个结果。我们可以选中公式,按F9,就可以看到数组公式返回的所有值了。分别为{FALSE;FALSE;FALSE;4;5;6;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}


可见,凡是跟条件匹配的,就返回了它的行号,不匹配的返回false。

第二步:用small+countif函数依次(从小到大)获取匹配结果的行号。首先我们要取得需要查找的内容在本列中出现的次数序号,用COUNTIF($G$2:G2,G2)可以实现。注意countif函数的条件区域起始行要使用绝对地址,终止行使用相对地址,这样往下拖动才能计数正确。


再与small函数配合(往下拖动)就能依次获取if函数返回数组的“第1小”、“第2小”、“第3小”的数(行号)。


第三步:用index函数+获取到的行号得到需要的结果:


在H2单元格输入公式: =INDEX($C$1:$C$12,SMALL(IF($B$1:$B$12=G2,ROW($B$1:$B$12)),COUNTIF($G$2:G2,G2))),往下拖动,就得到想要的结果了。

欢迎大家一起学习交流Excel公式使用方法,让我们的工作变得更加高效快捷。

谢谢点赞转发关注!