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

问题描述

-UPDATED-回答,谢谢所有提供帮助的人。

考虑以下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    |    ?

每个团队都由两个合作伙伴组成,例如约翰和苏。每行包含一个匹配项:团队的得分是每个成员中得分最高的。游戏的团队总得分是比赛得分的总和。

在示例中:

  • 团队1:John&Sue。比赛分数:(3,4,1,3,2,1)。总分= 16。
  • 团队2:鲍勃和托尼。比赛分数:(2,3)。总分= 18。

一个例子是两个高尔夫球手组成团队,他们之间的最佳得分是每个洞计算的,最后我们将它们加起来。

可以使用电子表格吗?

解决方法

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

如果要对一列/行中的前3个值求和:

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

要获得理想的结果,公式变得非常复杂:

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

但在Excel和GS中均可使用

enter image description here

,

在Excel中

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

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

enter image description here

其他

=SUMPRODUCT(((INDEX($B$2:$E$8,0))>INDEX($B$2:$E$8,0)))*INDEX($B$2:$E$8,0)))+((INDEX($B$2:$E$8,0))>=INDEX($B$2:$E$8,0)))*(INDEX($B$2:$E$8,0)))))

enter image description here

,

以下任何一个公式都将产生16和18的期望总和(在我的计算机上测试):

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

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

可以根据需要从此处构建进一步的自定义。与ArrayFormulaSUMPRODUCT一起玩,因为它们的用例比这要强大得多,并且在包括Excel在内的其他电子表格软件中具有类似之处。