【问题标题】:Formula returning Column A value for row containing MAX value of a range公式返回包含范围的 MAX 值的行的列值
【发布时间】:2015-11-11 06:10:06
【问题描述】:

假设我有下表:

  A         B         C
1           Week 1    Week 2
2 Melissa   114.7     82.8
3 Mike      105.5     122.5
4 Andrew    102.3     87.5
5 Rich      105.3     65.2

名称在 A 列,周值在第 1 行。(因此 A1 为空白,B1 = Week 1,A2 = Melissa。)

我正在尝试构建一个公式来查看已知范围内的所有值(在本例中为 B2:C5),选择该组中的最大值(此处为122.5)并返回名称A 列中获得该值的人。如果我使用这个公式,它适用于 B2:B5 范围内的值:

=INDEX(A2:A5,MATCH(MAX(B2:B5),B2:B5,0))

这会返回 Melissa,但如果我扩大范围以包括不仅仅是 B 列的值,我会得到一个 #N/A 返回:

=INDEX(A2:A5,MATCH(MAX(B2:C5),B2:C5,0))

奇怪的部分(对我简单的大脑来说)是公式的 MATCH 部分工作正常,如果我只是输入这个公式,它会从 C3 返回最高值 122.5

=MAX(B2:C5,B2:C5,0)

很明显,当我使用 MATCH 或 INDEX 命令时出现问题。

希望这是有道理的,有人可以指出我的错误吗?

【问题讨论】:

  • 我正在考虑如何解决它,但我认为关键是Match() 一次只能处理一列。

标签: excel excel-formula


【解决方案1】:

试试这个:

=INDEX(A:A,MAX((B2:C5=MAX(B2:C5))*ROW(B2:C5)))

这是一个数组公式,必须用Ctrl+Shift+Enter确认。

注意:匹配一次只能搜索一个向量。它可以是一行或一列或一个数组。不能是两行或多列或二维数组。

【讨论】:

  • 这适用于我的示例,谢谢 Excel 英雄!我会将其标记为解决方案。感谢您对 Match 的解释,很高兴知道。
  • 嘿,如果可以的话,一个后续问题:我决定我还想计算我的范围的 MIN 值(在我的实际电子表格中是 B2:Q11)。我将公式更改为使用 MIN 代替,但由于尚未填充所有周,因此它返回了错误的值,因为我猜它会将那些空方块视为零。这是我的公式;可以修复忽略零/空值吗? =INDEX(A:A,MIN((D2:S11=MIN(D2:S11))*ROW(D2:S11))) 再次感谢!迈克
  • 我可以为您提供最低限度的解决方案,但您能否为此提出一个新问题?您可以在该问题中引用此问题以使其更容易。
  • 我已经准备好了解决方案。当您发布新问题时,请告诉我。
  • Excel 英雄 - 抱歉我离开了一会儿。这是新的请求:stackoverflow.com/questions/33793498/…
【解决方案2】:

做“两次”吗?请尝试:

=INDEX(A2:A5,IFERROR(MATCH(MAX(B2:C5),B2:B5,0),MATCH(MAX(B2:C5),C2:C5,0)))  

如果您将有长达 52/53 周的时间来应对,我建议您改为为每一行插入一个带有 MAX 的辅助列。使一个新的(插入的)ColumnA(比如=MAX(C2:BC2)等)和一个简单的VLOOKUP应该服务,比如:

=VLOOKUP(MAX(A:A),A:B,2,0)

【讨论】:

  • 这个公式的长度会随着其他列的考虑而膨胀。
  • 我知道我可以为每个用户创建一个带有 MAX 的新列,然后在该列上执行一个 MAX 函数,但我喜欢学习如何以最简洁的方式进行操作 :) 谢谢大家!
猜你喜欢
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
相关资源
最近更新 更多