Суммируйте 5 самых больших чисел в каждой строке, динамически - PullRequest
1 голос
/ 12 января 2020

У меня есть таблица лиги со столбцом A, в котором отображается список участников чемпионата.

В соответствующем ряду представлены результаты различных гонок участников (очки). то есть Col C показывает Гонку 1, ColD Race 2 et c.

Я хочу подвести итоговую сумму для каждой строки (участника) 5 самых больших баллов (в столбце B)

Следующая формула отлично работает, введя построчно,

=ArrayFormula(SUM(IFERROR(LARGE($H5:$AE5,{1,2,3,4,5,6}),0)))

Однако я хочу, чтобы это была формула динамического массива c, которая заполняется самостоятельно, если будут добавлены новые участники. Что-то вроде (хотя это не работает):

=arrayformula(If(A2:A<>"",ArrayFormula(SUM(IFERROR(LARGE($H5:$AE5,{1,2,3,4,5,6}),0))),""))

Я безуспешно пытался использовать MMULT и несколько других случайных идей.

Тестовый лист можно использовать здесь ; https://docs.google.com/spreadsheets/d/18tmKdwAcXoDQrQxSDSnzgK6A5Erj22oSXcxwUt_lq4o/edit?usp=sharing

Ответы [ 2 ]

1 голос
/ 13 января 2020

Это должно работать даже с сотнями или тысячами строк. Вы можете найти его на новой вкладке с именем mk.help

= Arrayformula ({"TEST"; if (A3: A = "" ,, VLOOKUP (A3: A, query ({query (vlookup (SEQUENCE) (СЧЕТЗ (А3: А) * 10,1,0) / 10 + 3, {строка (А3: А), А3: А, D3: М}, мод (ПОСЛЕДОВАТЕЛЬНОСТЬ (СЧЕТЗ (А3: А) 10 , 1,0), 10) {0,1} + {2,3}), «порядок по Col1, Col2 des c»), Mod (SEQUENCE (COUNTA (A3: A) * 10, 1,0), 10)}, "выберите Col1, Sum (Col2), где Col3 <5, группа по Col1"), 2,0))}) </p>

1 голос
/ 13 января 2020

В B3 поместите эту формулу:

=arrayformula(query({transpose(split(textjoin(",",false,{left("",row(A3:A5))} & join(",",column(D3:M3)-column(D3))),",",true,false)),sort(split(transpose(split(textjoin("*",false,{row(B3:B5) & "^" & D3:M5}),"*",true,false)),"^",true,false),1,true,2,false)},"Select sum(Col3) where Col1<=4 group by Col2 label sum(Col3) ''"))

, но вы должны изменить это больше чем на номер строки 5

...