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

如何根据列中最大值获取对应行B列单元格值?已尝试=sort和=filter未解决

解决方法:根据跨列最大值获取对应B列值

听起来你是想在表格里从C5:C和D5:D这两个区域找到最大数值,然后拿到同一行的B列内容对吧?之前用sort和filter没搞定,我来给你几个靠谱的方案,分Google Sheets和Excel两种情况说明:

通用核心思路

要实现这个需求,关键分两步:

  • 第一步:算出C5:C和D5:D整个范围内的最大值
  • 第二步:找到这个最大值所在的行,提取对应B列的值

方案1:用XLOOKUP(推荐,简洁直观)

Google Sheets写法

=XLOOKUP(MAX(C5:C,D5:D), {C5:C; D5:D}, {B5:B; B5:B}, "无匹配值")

Excel写法(需要365/2021及以上版本)

=XLOOKUP(MAX(C5:C,D5:D), VSTACK(C5:C,D5:D), VSTACK(B5:B,B5:B), "无匹配值")

代码解释:

  • MAX(C5:C,D5:D):直接算出C、D两列所有数据里的最大值
  • {C5:C; D5:D}(Google Sheets)/VSTACK(C5:C,D5:D)(Excel):把C列和D列垂直合并成一个新单列,统一查找最大值的位置
  • {B5:B; B5:B}/VSTACK(B5:B,B5:B):对应上面合并的列,重复合并B列,保证最大值位置和B列行一一对应
  • "无匹配值":如果区域为空没找到最大值,会显示这个提示,可按需修改

方案2:用INDEX+MATCH组合(兼容旧版本)

如果你的Excel版本不支持XLOOKUP/VSTACK,试试经典的INDEX+MATCH:

Google Sheets写法

=INDEX(B5:B, MATCH(MAX(C5:C,D5:D), {C5:C; D5:D}, 0))

Excel写法

=INDEX(B5:B, MATCH(MAX(C5:C,D5:D), VSTACK(C5:C,D5:D), 0))

注意:

如果C或D列有多个相同的最大值,这个方法会返回第一个出现的最大值对应的B列值。


方案3:返回所有匹配的B列值(多最大值场景)

如果有多个行的C或D列等于最大值,想要列出所有对应的B列值,用FILTER:

Google Sheets/Excel通用写法

=FILTER(B5:B, (C5:C=MAX(C5:C,D5:D))+(D5:D=MAX(C5:C,D5:D)))

解释:

(C5:C=MAX(...))+(D5:D=MAX(...)) 代表逻辑或,只要C列或D列等于最大值的行,都会被筛选出来,返回对应的B列内容。


为什么之前用sort/filter没成功?

大概率是没把C、D两列的最大值逻辑结合起来:

  • 单独用filter筛选C列最大值,会漏掉D列的最大值行
  • 用sort时,可能没把每行的C、D最大值作为排序依据,导致结果不对。你可以试试这个sort写法(Google Sheets):
=INDEX(SORT({B5:B, BYROW(C5:D, LAMBDA(row, MAX(row)))}, 2, FALSE), 1, 1)

它先给每行计算C、D列的最大值,再把B列和这个最大值列一起按降序排序,最后取第一行的B列值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:57:29