Excel多对多查询的快捷算法+万金油公式
点击下方 ↓ 关注,每天免费看Excel专业教程
置顶公众号或设为星标 ↑ 才能每天及时收到推送
最近收到的各种数据查询相关的问题很多,比较集中的反馈是多条件多项目查询出多个结果的多对多查询,这确实是实际工作中经常会遇到的一种棘手问题,今天专门写篇教程,针对性的帮助大家解决这类问题。
工作场景及问题描述
某企业出于工作需要,经常需要对多家供应商的发货情况进行核对。
由于实际工作中各家供应商的发货时间不同,每次的供货数量不同,到货时间也不同,所以需要针对每家供应商的多笔供货查询应到货数量。
这里可以肯定的是,同一家供应商发出的多笔供货,遵循先发先到的原则。
场景如下(H列区域输入公式生成查询数量)
停下来想一想:
先自己独立思考2分钟吧,再往下看答案也不迟。
温馨提示:
这类问题的解决方案有很多种,下文会给出两种不同难度,不同思路的Excel函数公式解法。
快捷算法公式
先创建辅助列,D列输入下方公式,如下图绿色区域所示。
=B2&COUNTIF(B$2:B2,B2)
如下图截图所示
有了辅助列的帮助,下面的查询难度降低了很多:
在H列的黄色区域输入以下公式
=INDEX(C:C,MATCH(G2&COUNTIF(G$2:G2,G2),D:D,))
生成效果及截图如下。
本解法优势:
该公式无需过多公式基础,无需数组公式,仅普通公式即可。
思路解析:
这种解法的关键之处在于,对同一供应商的多次供货标识顺序,比如“李锐A”这家供应商第一次供货是“李锐A1”,第二次供货是“李锐A2”,依此类推,再根据这个唯一标识调用index+match组合查询。
只要你学过二期特训营的函数初级班,有了这个思路,后面那个公式可以很轻松实现了。
万金油公式
对于某些工作中不允许添加辅助列的场景,咱们可以直接使用Excel中大名鼎鼎的万金油数组公式暴力解决这类多对多查询文题。
不多啰嗦,先给公式,再说思路
数组公式如下:
=INDEX(C:C,SMALL(IF(B$2:B$16=G2,ROW($2:$16),4^8),COUNTIF(G$2:G2,G2)))
注意这个公式要同时按Ctrl+Shift+Enter三键输入,不要直接按Enter啊,否则无法执行数组运算,返回的结果也会有问题。
本解法优势:
该公式无需任何辅助列,可以直接生成结果。
思路解析:
借助IF函数筛选符合供应商名称的行号位置,再从中依次按供应商是第几次出现提取对应位置的数据。
希望这篇文章能帮到你!
这么多内容担心记不全的话,可以分享到朋友圈给自己备份一份。