基于Excel多工作表数据筛选最优供应商(最低价/最高库存)
解决方案
方法1:Excel 365/2021 动态数组公式(推荐)
假设「Price」表结构为:A列=产品名,B列=供应商,C列=报价;「Stock」表结构为:A列=产品名,B列=供应商,C列=库存。
在「Sup Selection」工作表的A2单元格输入目标产品名,B2单元格输入以下公式即可得到符合要求的供应商:
=LET( prod,A2, price_list,FILTER(Price!A:C,Price!A:A=prod), sorted_result,SORTBY(price_list,INDEX(price_list,,3),1,XLOOKUP(INDEX(price_list,,2),Stock!B:B,Stock!C:C,0),-1), INDEX(sorted_result,1,2) )
公式逻辑:
- 用
FILTER筛选出当前产品的所有报价数据 - 用
SORTBY先按报价升序(优先取最低报价),再按对应供应商的库存降序(报价相同时取库存最高的) - 最后提取排序后第一行的供应商名称
如果要批量处理所有产品,先在「Sup Selection」A列提取唯一产品列表:
=UNIQUE(Price!A:A)
再下拉B列公式即可批量生成结果。
方法2:兼容旧版Excel(无动态数组)
若使用旧版Excel,在「Sup Selection」B2单元格输入以下数组公式(输入后按Ctrl+Shift+Enter确认):
=INDEX(Price!B:B,MATCH(1,(Price!A:A=A2)*(Price!C:C=MIN(IF(Price!A:A=A2,Price!C:C)))*(Stock!C:C=MAX(IF((Price!A:A=A2)*(Price!C:C=MIN(IF(Price!A:A=A2,Price!C:C))),Stock!C:C))),0))
公式逻辑:
- 先定位当前产品的最低报价
- 再找到该报价下的最高库存
- 最终匹配同时满足产品、最低报价、最高库存的供应商
注意事项
- 确保「Stock」和「Price」表中的供应商名称完全一致(无空格、大小写差异),否则匹配会失败
- 若同一产品同一最低报价下有多个供应商库存相同,公式会返回第一个匹配到的供应商
内容的提问来源于stack exchange,提问作者Saj Abdullah
相关产品推荐
相关产品推荐

