Как найти кривую оценку в Google Sheets? - PullRequest
0 голосов
/ 29 октября 2019

Я работаю над файлом, в котором добавляются итоговые оценки всех курсов, каждый студент имеет право получить до 5 оценок, поскольку кривая для всех его / ее итоговых оценок ниже Проходной балл . Мой вопрос: возможно ли найти новые итоговые оценки с добавленными оценками по формуле и / или Script в Google Sheets. Ниже приведен образец данных

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 (если это возможно) .

Ответы [ 2 ]

1 голос
/ 30 октября 2019

в соответствии с запросом, проходной балл составляет 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))

0

демонстрация электронной таблицы

0 голосов
/ 29 октября 2019

попробовать:

=ARRAYFORMULA(IF((C2:C>56)*(C2:C<60), 60, C2:C))

0


ОБНОВЛЕНИЕ:

=ARRAYFORMULA(VLOOKUP(A3:A&" "&B3:B, {TRANSPOSE(QUERY(TRANSPOSE(
 ARRAY_CONSTRAIN(SORT({A3:C}, 1, 1, 3, 0),999^99, 2)),,999^99)), IF(
 MMULT(--TRANSPOSE(IF((TRANSPOSE(ROW(A3:A))>=ROW(A3:A))*(A3:A=TRANSPOSE(A3:A)), 
 60-INDEX(SORT({A3:A, IF((C3:C<60)*(C3:C>54), C3:C, 0)}, 1, 1, 2, 0),,2), 0)), 
 ROW(A3:A)^0)<=5, 
 60-INDEX(SORT({A3:A, IF((C3:C<60)*(C3:C>54), C3:C, 0)}, 1, 1, 2, 0),,2)+
 INDEX(SORT({A3:A, IF((C3:C<60)*(C3:C>54), C3:C, 0)}, 1, 1, 2, 0),,2), 
 INDEX(SORT({A3:A, C3:C}, 1, 1, 2, 0),,2))}, 2, 0))

0

демонстрация электронной таблицы

...