如何结合使用Max、VLOOKUP与MATCH函数?现有公式报错求助
问题
我给每年的每个月都建了单独的工作表,现在要在一张汇总各月数据的新表里做两件事:
- 查找特定内容(单元格$D94)在各月工作表的
C56:AY70区域内,对应第49列(AY列)的最大值,这一步已经用公式实现; - 匹配上述最大值所在行的右侧AZ列(第50列)的文本,但添加
MATCH函数时持续报错。
现有求最大值的公式:
=MAX(IFERROR(VLOOKUP($D94,JANUARY!C56:AY70,49, FALSE),"0"),IFERROR(VLOOKUP($D94,FEBRUARY!C56:AY70,49, FALSE),"0"),IFERROR(VLOOKUP($D94,MARCH!C56:AY70,49)))
解决办法
直接在现有MAX公式上嵌套MATCH容易出错,换用以下思路实现(Excel 365/2021直接回车即可,旧版本需按Ctrl+Shift+Enter确认数组公式):
方案1:批量引用工作表的通用写法
- 先在汇总表空白区域(比如Z1:Z12)依次输入所有月份工作表的名称:
JANUARY、FEBRUARY...DECEMBER,方便批量调用。 - 简化后的最大值公式:
=MAX(IFERROR(VLOOKUP($D94,INDIRECT(Z1:Z12&"!C56:AY70"),49,FALSE),0))
- 提取对应AZ列文本的公式:
=INDEX(INDIRECT(XLOOKUP(MAX(IFERROR(VLOOKUP($D94,INDIRECT(Z1:Z12&"!C56:AY70"),49,FALSE),0)),IFERROR(VLOOKUP($D94,INDIRECT(Z1:Z12&"!C56:AY70"),49,FALSE),0),Z1:Z12)&"!AZ56:AZ70"),MATCH($D94,INDIRECT(XLOOKUP(MAX(IFERROR(VLOOKUP($D94,INDIRECT(Z1:Z12&"!C56:AY70"),49,FALSE),0)),IFERROR(VLOOKUP($D94,INDIRECT(Z1:Z12&"!C56:AY70"),49,FALSE),0),Z1:Z12)&"!C56:C70"),0))
方案2:适合单最大值的简化写法
如果$D94在每个月工作表中仅出现一次,或者最大值唯一,可使用更简洁的公式:
=INDEX(INDIRECT(CHOOSE(MATCH(MAX(IFERROR(VLOOKUP($D94,JANUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,FEBRUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,MARCH!C56:AY70,49,FALSE),0)),IFERROR(VLOOKUP($D94,JANUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,FEBRUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,MARCH!C56:AY70,49,FALSE),0),1,2,3)&"!AZ56:AZ70"),MATCH($D94,INDIRECT(CHOOSE(MATCH(MAX(IFERROR(VLOOKUP($D94,JANUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,FEBRUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,MARCH!C56:AY70,49,FALSE),0)),IFERROR(VLOOKUP($D94,JANUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,FEBRUARY!C56:AY70,49,FALSE),0),IFERROR(VLOOKUP($D94,MARCH!C56:AY70,49,FALSE),0),1,2,3)&"!C56:C70"),0))
报错原因
直接嵌套MATCH报错,是因为MAX返回单一数值,而MATCH需要在连续单元格区域内查找,加上跨工作表引用未正确嵌套,导致函数无法识别有效查找范围,从而触发错误。
内容的提问来源于stack exchange,提问作者user6738171
相关产品推荐
相关产品推荐

