vlookup如何查询多个结果?借助countif函数
今日分享主题:vlookup如何查询多个结果?借助countif函数。
昨天我朋友问我:vlookup可以把重复的数据筛出来吗?
我说不能。
我朋友:我就说不能,我同事硬说可以,还说她以前用这个函数这样操作过。
我心想,那可能说的是vlookup函数查找多个结果的情况。于是我说:那我写文章来说说吧。
确实,有时候一个查找值在查找区域中有好几个查找结果。但是你用vlookup函数只能找到首个结果,其它结果都找不到。
你被困住:vlookup不行啊。确实,这种情况直接用vlookup是不行的。为什么呢?
你可以通过vlookup函数的运算过程来理解:只要在查找区域里找到了查询值,那么它的查询就会停止,不管你后面还有没有其它匹配结果。(这也是为什么它会成为大家用得最多的查找函数,因为它懂得适可而止,不会沾花惹草,效率极高!)
所以,基于vlookup函数的运算特点,注定了它无法直接查询多个结果。但是,如果它能搬来救兵,是不是可以实现呢?
答案当然是肯定的。
我们照例先来分析需求:同一个查找值,在查找区域有多个匹配关系,怎么样能够找出所有匹配结果呢?
既然用vlookup函数来找,那就得遵循它的语法规则:只能查询到一个且是首个结果,即一对一的关系。
当需要找多个结果时,其实就得有多组匹配关系,即查找值也得多个,才能实现多对多。
好,到这里,我们的思路就有了。要想办法把第一个参数查找值变成多个,同时根据vlookup语法,查找区域首列的查找值也要变成多个。怎么实现呢?
首先,对于vlookup的第1个参数查找值,可以借助column函数来实现多个。column的用法,我在:批量有序查询你还在手动吗?不,column助你一臂之力文章分享过。
同时,对于查找区域首列的查找值,可以借助countif函数来实现多个。顾名思义,这是一个条件计数函数。通过它,可以给不同查找结果对应的首列查找值编不同的码,使首列同一查找值通过编码区分,变成多个。
这里先来介绍countif函数的用法。
首先,是它的用途:计算条件区域内符合条件的单元格个数。
然后,是它的语法:2个参数,都是必需的。这个函数比较简单,会用就好,一些注意事项与具体场景有关,以后遇到再说。
好,到这里,我们已经知道了为什么vlookup可以借助countif以及column来查询多个结果,也补充了countif的用法,那接下来我们就来看今天真正要解决的问题。
举例来说:如何根据品牌来查询门店名称?注意这里A、D品牌都对应不止一家店噢。
根据前面的思路,我们分三步走:
第一步,给A列的品牌增加编码,这里考虑增加辅助列,效果如下:
这个效果,正是用countif来实现,公式如下:
关于这个公式,稍微解释下COUNTIF(B$2:B2,B2)中的第1参数的条件区域:为什么不直接写B:B,而要写B$2:B2。
根据前面说的,要将首列同一查找值通过编码区分开来,那么编码就得不一样。而这个编码正是通过countif计算而来的,所以这里countif对同一品牌的计数结果就要不一样。
怎么实现呢?通过调整其条件区域:锁定首行,然后逐步往下延展。这样条件计数的结果也随着条件出现的次数逐步增加。
第二步,添加辅助列后,以它为首列,去写vlookup函数的查找公式,这里注意还借助了column来实现。
第三步,J3单元格结果报错,用iferror进行容错处理:
好,到这里,用vlookup函数如何查询多个结果就讲完了。整个过程逻辑性还是比较强的,可以自己动手操作加深理解噢。
今天的分享就到这里,非常感谢你的耐心阅读,希望对你有所启发。最后大家可以通过坚果云分享出去,越分享越快乐。