电子表格 - 我试图找到两列中前 n 个数字的总和

Spreadsheet - Im trying to find the sum of the top n numbers in two columns

-已更新-已回答,感谢所有帮助过的人。

考虑以下 Google 电子表格:

   A      B     C     D     E
1       John | Bob | Sue | Tony
2  h1     2  |  1  |  3  |  2
3  h2     3  |  3  |  4  |  2
4  h3     1  |  2  |  1  |  3
5  h4     2  |  2  |  3  |  1
6  h5     2  |  1  |  1  |  3
7  h6     1  |  2  |  2  |  1
8  h7     1  |  2  |  1  |  3

Team  |  Player1  |  Player 2  |  Score
  1   |   John    |    Sue     |    ?
  2   |   Bob     |    Tony    |    ?

每个团队由两个合作伙伴组成,例如约翰和苏。每行包含一场比赛:球队的得分是每个成员的最佳得分。本场比赛的队伍总成绩为比赛成绩之和。

示例中:

另一个例子是两个高尔夫球手作为一个团队工作,他们之间的最好成绩是每洞计算的,最后我们将它们相加。

可以使用电子表格完成吗?

在 Excel 中,您可以使用 LARGE() 函数。这是最简单的选项,但有点冗长。

如果你想要column/row中前3个值的总和:

 = large(A1:A10, 1), large(A1:A10, 2) + large(A1:A10, 3)

以下任一公式都会产生所需的 16 和 18 之和(在我的机器上测试过):

=ArrayFormula(SUM(IF($B:$B>$D:$D,$B:$B,$D:$D)))
=SUMPRODUCT(IF($B:$B>$D:$D,$B:$B,$D:$D))

将 Bob + Tony 调整为 B->C 和 D->E。这些公式通过对数组进行运算来工作。他们对 B2:B8 范围内的每个单元格计算一次 IF 语句,并生成一个值数组 ({3,4,1,3,2,2,1})。然后 SUMSUMPRODUCT 将对这些值求和。 ArrayFormula 是强制 SUM 将 IF 作为数组处理的必要条件。

可以根据需要从这里构建进一步的自定义。尝试使用 ArrayFormulaSUMPRODUCT,因为它们具有比这更强大的用例,并且在其他电子表格软件中具有相似之处,包括 Excel.

为了得到想要的结果,公式很复杂:

=SUMPRODUCT(IF(MMULT((B12=$B:$E)*$B:$E,ROW(A1:A4)^0)>MMULT((C12=$B:$E)*$B:$E,ROW(A1:A4)^0),(B12=$B:$E)*$B:$E,(C12=$B:$E)*$B:$E))

但适用于 Excel 和 GS

在Excel

如果有新的动态数组公式LET():

=LET(x,INDEX($B:$E,0,MATCH(I2,$B:$E,0)),y,INDEX($B:$E,0,MATCH(J2,$B:$E,0)),SUMPRODUCT(((x>y)*x)+((y>=x)*(y))))

其他

=SUMPRODUCT(((INDEX($B:$E,0,MATCH(I2,$B:$E,0))>INDEX($B:$E,0,MATCH(J2,$B:$E,0)))*INDEX($B:$E,0,MATCH(I2,$B:$E,0)))+((INDEX($B:$E,0,MATCH(J2,$B:$E,0))>=INDEX($B:$E,0,MATCH(I2,$B:$E,0)))*(INDEX($B:$E,0,MATCH(J2,$B:$E,0)))))