电子表格 - 我试图找到两列中前 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 | ?
每个团队由两个合作伙伴组成,例如约翰和苏。每行包含一场比赛:球队的得分是每个成员的最佳得分。本场比赛的队伍总成绩为比赛成绩之和。
示例中:
- 第 1 队:约翰和苏。比赛得分:(3,4,1,3,2,2,1)。总分 = 16.
- 第 2 队:鲍勃和托尼。比赛得分:(2,3,3,2,3,2,3)。总分 = 18.
另一个例子是两个高尔夫球手作为一个团队工作,他们之间的最好成绩是每洞计算的,最后我们将它们相加。
可以使用电子表格完成吗?
在 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}
)。然后 SUM
或 SUMPRODUCT
将对这些值求和。 ArrayFormula
是强制 SUM
将 IF 作为数组处理的必要条件。
可以根据需要从这里构建进一步的自定义。尝试使用 ArrayFormula
和 SUMPRODUCT
,因为它们具有比这更强大的用例,并且在其他电子表格软件中具有相似之处,包括 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)))))
-已更新-已回答,感谢所有帮助过的人。
考虑以下 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 队:约翰和苏。比赛得分:(3,4,1,3,2,2,1)。总分 = 16.
- 第 2 队:鲍勃和托尼。比赛得分:(2,3,3,2,3,2,3)。总分 = 18.
另一个例子是两个高尔夫球手作为一个团队工作,他们之间的最好成绩是每洞计算的,最后我们将它们相加。
可以使用电子表格完成吗?
在 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}
)。然后 SUM
或 SUMPRODUCT
将对这些值求和。 ArrayFormula
是强制 SUM
将 IF 作为数组处理的必要条件。
可以根据需要从这里构建进一步的自定义。尝试使用 ArrayFormula
和 SUMPRODUCT
,因为它们具有比这更强大的用例,并且在其他电子表格软件中具有相似之处,包括 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)))))