多行列区域求最大值后返回对应首行及C列值的表格函数问询
解决Google Sheets中跨区域匹配最大值对应行/列的问题
你遇到的问题确实戳中了VLOOKUP的局限性——它只适合单方向的垂直或水平查找,而你的需求是在多行多列的区域里找到最大值后,分别匹配对应的表头(第1行)和指定列(C列)的值,这时候用INDEX+SUMPRODUCT或者XLOOKUP会更合适。
假设前提(可根据实际表格调整)
假设你的最大值计算自数据区域C2:E5(也就是A2的公式是=MAX(C2:E5)),我们以此为例给出公式:
1. 标注为FROM的单元格B4:返回最大值对应第1行的表头
这个需求是找到最大值所在的列,然后取该列第1行的内容,推荐两种写法:
方法1:用INDEX + SUMPRODUCT(兼容性好,适合旧版表格)
=INDEX($C$1:$E$1, SUMPRODUCT(($C$2:$E$5=$A$2)*COLUMN($C$2:$E$5)) - COLUMN($C$1) + 1)
- 原理:
SUMPRODUCT计算出最大值所在单元格的列号,减去表头区域的起始列号再加1,得到它在表头区域中的位置,最后用INDEX提取对应内容。
方法2:用XLOOKUP(更简洁,Google Sheets原生支持)
=XLOOKUP($A$2, TRANSPOSE($C$2:$E$5), TRANSPOSE($C$1:$E$1))
- 原理:用
TRANSPOSE把数据区域和表头区域都转成横向数组,让XLOOKUP能直接匹配最大值对应的表头。
2. 标注为TO的单元格B6:返回最大值对应行的C列值
这个需求是找到最大值所在的行,然后取该行C列的内容,同样推荐两种写法:
方法1:用INDEX + SUMPRODUCT
=INDEX($C$2:$C$5, SUMPRODUCT(($C$2:$E$5=$A$2)*ROW($C$2:$E$5)) - ROW($C$2) + 1)
- 原理:和上面逻辑一致,
SUMPRODUCT算出最大值所在单元格的行号,减去数据区域的起始行号再加1,得到它在C列数据区域中的位置,用INDEX提取内容。
方法2:用XLOOKUP
=XLOOKUP($A$2, $C$2:$E$5, $C$2:$C$5)
- 原理:
XLOOKUP会自动遍历整个数据区域,找到最大值后返回对应位置的C列值(如果有多个相同最大值,会返回第一个出现的结果)。
注意事项
- 如果你的数据区域不是
C2:E5,请把公式里的区域替换成你实际的最大值来源区域; - 若存在多个相同的最大值,以上公式都会返回第一个出现的最大值对应的结果;
- 确保A2的MAX公式确实指向了正确的数据区域,避免匹配出错。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

