You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel用INDEX+MATCH匹配最低成本/交期对应供应商报错求助

解决跨工作表INDEX+MATCH匹配供应商名称的#VALUE!错误问题

问题背景

我需要制作两个表格,分别按最低成本、最短交期展示零件报价,需跨所有供应商专属工作表查找对应值。已通过=SMALL('Summary:Vendor Template'!I24,1)获取到最低交期和成本,但使用INDEX+MATCH返回对应供应商名称时出现#VALUE!错误。当前公式为:

=INDEX('Summary:Vendor Template'!C25,MATCH(I25,'Summary:Vendor Template'!I25,0))

其中I25为跨工作表成本单元格,C25为需返回供应商名称的单元格。

补充示例:现有4个工作表:Summary、Test1、Test2、Vendor Template。Test1中零件223供应商为test1,总成本150;Test2中零件223供应商为test2,总成本110。Summary已通过SMALL函数得到最低总成本110,需返回对应供应商名称test2。

错误原因

公式引用的是单个单元格(C25、I25),而非包含所有数据的连续区域。MATCH需要在完整的数值区域中查找目标值,INDEX也需要对应到完整的供应商名称区域,才能匹配到正确结果。

解决方案

1. 基于汇总表的常规INDEX+MATCH公式

假设Vendor Template工作表中,供应商名称存于C列(如C2:C100),总成本存于I列(如I2:I100),在Summary工作表的目标单元格输入:

=INDEX('Vendor Template'!C:C,MATCH(I25,'Vendor Template'!I:I,0))

确保Vendor Template中的C列和I列是所有供应商数据的完整汇总。

2. 直接跨多工作表查找(无需汇总表)

如果不想通过Vendor Template中转,可使用数组公式(旧版Excel需按Ctrl+Shift+Enter确认):

=INDEX(CHOOSE({1,2},Test1!C:C,Test2!C:C),MATCH(I25,CHOOSE({1,2},Test1!I:I,Test2!I:I),0))

3. 简化方案(Excel 365/2021动态数组)

用XLOOKUP函数更高效,直接跨表合并区域查找:

=XLOOKUP(I25,VSTACK(Test1!I:I,Test2!I:I),VSTACK(Test1!C:C,Test2!C:C))

若数据已汇总到Vendor Template,可简化为:

=XLOOKUP(I25,'Vendor Template'!I:I,'Vendor Template'!C:C)

额外说明

  • 若存在多个相同的最低成本,MATCH会返回第一个匹配的供应商;需返回所有匹配项时,用FILTER函数(仅Excel 365支持):
    =FILTER('Vendor Template'!C:C,'Vendor Template'!I:I=I25)
    
  • 确保查找区域与返回区域的行数完全对应,避免引用不连续或长度不一致的区域。

内容的提问来源于stack exchange,提问作者BanJoJo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:50:24