Arrays 如何在谷歌表格中找到曲线坡度?

Arrays 如何在谷歌表格中找到曲线坡度?,arrays,if-statement,google-sheets,google-sheets-formula,array-formulas,Arrays,If Statement,Google Sheets,Google Sheets Formula,Array Formulas,我正在处理一个文件,其中添加了所有课程的最终分数,每个学生都有权获得多达5个分数,因为他/她所有的最终分数都低于及格分数。我的问题是:是否有可能在谷歌表单中通过公式和/或脚本找到新的最终分数和添加的分数。 下面是数据示例 studentName course final final (withCurve) A Math 59 60 A

我正在处理一个文件,其中添加了所有课程的最终分数,每个学生都有权获得多达5个分数,因为他/她所有的最终分数都低于及格分数。我的问题是:是否有可能在谷歌表单中通过公式和/或脚本找到新的最终分数和添加的分数。 下面是数据示例

studentName course final final (withCurve) A Math 59 60 A Physics 58 60 A English 54 54 B English 55 55 B Physics 58 60 B French 57 60 注:假设及格分数为60分,并尽可能多地将这5个分数分配给更多的课程,这意味着如果可能,最好将分数分配给57分、58分,而不是一个55分。

尝试:

=ARRAYFORMULA(IF((C2:C>56)*(C2:C<60), 60, C2:C))
更新:
根据要求,及格分数为60分,只有在特定科目中不及格的学生才能获得5分的奖励,这些奖励分数的发放是为了提高及格分数

因此,公式是:

=ARRAYFORMULA(IFNA(VLOOKUP(A3:A&B3:B, QUERY(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE("♦"&QUERY(TRANSPOSE(QUERY({
 SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1")), "select Col1", 0)&
 QUERY(TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select Col2,max(Col3) where Col1 is not null group by Col4,Col2 pivot Col1"), 
 "offset 1", 0)), "limit 0", 1)&"♠"&
 IFNA(REGEXREPLACE(TO_TEXT(TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", )+IFNA(
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3+Col4+Col5 label Col1+Col2+Col3+Col4+Col5''"), 6)<=5, 
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ),
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3+Col4 label Col1+Col2+Col3+Col4''"), 6)<=5, 
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3 label Col1+Col2+Col3''"), 6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1,Col2,Col3"),
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2 label Col1+Col2''"), 6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ),
 "select Col1,Col2"), 
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1 "),6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ) ,
 "select Col1"), ))))), 0), 0)),,999^99)),,999^99), "♦")), "♠"), "where Col2 !=0"), 2, 0), C3:C))

谢谢,有一个问题,每个学生最多可以有5个年级,而不是55到59之间的每个年级都可以改为60。如何解决这个问题?你能分享一份你的工作表或一些模型的数据结构和所需输出的示例吗?请找到一个工作表,下面的示例数据是最大值60?我明白了,那么只有一个问题。。。这5点奖金的分配。。。我可以想到两个选项:1:将它们平均分配到前5个最高值,或2:以最大值阈值为目标,例如100,尝试最大化最高容量,然后移动到第二个最高值和最大值,然后是第三个,等等。。。。那么你想遵循什么逻辑呢?很好,你能再帮我一件事吗。如何做到这一点:如果学生无法通过剩余弹跳,他/她不得接收。例如,一个学生有57和56,3加在57上,因为他可以通过2,因此56必须保持不变。
=ARRAYFORMULA(IFNA(VLOOKUP(A3:A&B3:B, QUERY(SPLIT(TRANSPOSE(SPLIT(
 QUERY(TRANSPOSE(QUERY(TRANSPOSE("♦"&QUERY(TRANSPOSE(QUERY({
 SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1")), "select Col1", 0)&
 QUERY(TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select Col2,max(Col3) where Col1 is not null group by Col4,Col2 pivot Col1"), 
 "offset 1", 0)), "limit 0", 1)&"♠"&
 IFNA(REGEXREPLACE(TO_TEXT(TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", )+IFNA(
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3+Col4+Col5 label Col1+Col2+Col3+Col4+Col5''"), 6)<=5, 
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ),
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3+Col4 label Col1+Col2+Col3+Col4''"), 6)<=5, 
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2+Col3 label Col1+Col2+Col3''"), 6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1,Col2,Col3"),
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1+Col2 label Col1+Col2''"), 6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ),
 "select Col1,Col2"), 
 IF(IFERROR(QUERY(1*REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1), 
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ), 
 "select Col1 "),6)<=5, QUERY(
 REGEXREPLACE(TO_TEXT(60-TRANSPOSE(QUERY(QUERY({SORT(FILTER(A3:C, C3:C<60, C3:C>54), 1, 1, 3, 1),
 SORT(FILTER(ROW(A3:A), C3:C<60, C3:C>54), 1, 0)}, 
 "select max(Col3) where Col1 is not null group by Col4 pivot Col1"), "offset 1", 0))), "^60$", ) ,
 "select Col1"), ))))), 0), 0)),,999^99)),,999^99), "♦")), "♠"), "where Col2 !=0"), 2, 0), C3:C))