对一系列中最高的 N 个值求和?

对一系列中最高的 N 个值求和?

我有一张电子表格,其中每一行都是一组数字比赛得分。每一行都可以看作是整个比赛中的单个参赛者,每一列都是一个比赛项目。这没什么特别的。

现在,我想总和最高价值分数每行都有,例如:

  • 如果小于或等于提供分数,将所有列出的分数相加
  • 如果超过提供分数,总结系列中最高

怎么做?

就我的情况来说,=5,但我希望存在一个通用的解决方案。

我不想为此使用宏,但如果不能用简单的公式来完成,我愿意探索这种方法。

答案1

使用该LARGE功能。

=LARGE(Range;1)+LARGE(Range;2)+…+LARGE(Range;N)

或者

=SUM(LARGE(Range;1); LARGE(Range;2); …; LARGE(Range;N))

请注意,在某些语言环境中,函数参数必须用逗号而不是分号分隔。

答案2

好的,如果您的数据数字数据在行中Sheet1,则输入您的值代入Sheet2!N1,并输入

=SUM(LARGE(Sheet1!1:1, ROW(INDIRECT("1:"&MIN(COUNT(Sheet1!1:1),N$1)))))

Sheet2!A1。(如果您的数据仅在 到 的列中,则更改为。)按++创建数组公式。向下拖动所需的行数,然后就完成了。(请注意,例如, 中的G将自动更改为,即 的第 17 行,因为行号是相对的——前面没有。)ZSheet1!1:1Sheet1!G1:Z1CtrlShiftEnterSheet2!A17Sheet1!1:1Sheet1!17:17Sheet1$

解释:

  • COUNT(Sheet1!1:1)是引用行(如上所示,可能是 Row  1、 Row 17或您正在查看的任何行Sheet2)中的数字(分数)的数量。我这样做是因为您说“并非所有竞争对手都会参加每项赛事”;我假设不参与的项为空白,或者可能是非数字字符串。
  • N$1您指定的值;您想要添加的分数的数量。
  • MIN()当然是最小值。如果是 5,而一名选手只参加了三项比赛,我们希望将三项都加起来。如果一名选手参加了七项比赛,我们希望将最高五项加起来。
  • &是 Excel 中的字符串连接运算符(据我所知,Libre Office Calc 与 Excel 非常相似),因此,如果我们要添加的分数数量(MIN(…))是 5,那么就"1:"&MIN(…)变成字符串值"1:5"
  • INDIRECT("1:5")1是由 Row到 Row组成的区域5,并且
  • ROW()其中 是数组{1,2,3,4,5}
    这是创建由运行时数据指定的数组值的技巧。
  • LARGE(Sheet1!1:1, {1,2,3,4,5})是数组{ LARGE(Sheet1!1:1,1), LARGE(Sheet1!1:1,2), LARGE(Sheet1!1:1,3), LARGE(Sheet1!1:1,4), LARGE(Sheet1!1:1,5) },它是范围内的最大(最高)分数,第二大分数,……,依此类推,直到第五个。

我假设您所在的地区使用逗号作为分隔符。如果您身处分号之地,请按照分号的方式操作。

答案3

我会通过将分数构建为表格然后按分数对表格进行排序来解决这个问题。然后你就可以只查看前 n 列...

如果您需要“动态”更改 n,您可以根据设置的值间接引用单元格。

相关内容