Excel多对多查询的快捷算法+万金油公式

点击下方 ↓ 关注,每天免费看Excel专业教程

置顶公众号设为星标 ↑ 才能每天及时收到推送

个人微信号 | (ID:LiRuiExcel520)
微信服务号 | 跟李锐学Excel(ID:LiRuiExcel)
微信公众号 | Excel函数与公式(ID:ExcelLiRui)

最近收到的各种数据查询相关的问题很多,比较集中的反馈是多条件多项目查询出多个结果的多对多查询,这确实是实际工作中经常会遇到的一种棘手问题,今天专门写篇教程,针对性的帮助大家解决这类问题。

工作场景及问题描述

某企业出于工作需要,经常需要对多家供应商的发货情况进行核对。

由于实际工作中各家供应商的发货时间不同,每次的供货数量不同,到货时间也不同,所以需要针对每家供应商的多笔供货查询应到货数量。

这里可以肯定的是,同一家供应商发出的多笔供货,遵循先发先到的原则。

场景如下(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函数筛选符合供应商名称的行号位置,再从中依次按供应商是第几次出现提取对应位置的数据。

希望这篇文章能帮到你!

这么多内容担心记不全的话,可以分享到朋友圈给自己备份一份。

(0)

相关推荐