Сумма последних N значений с критериями - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть простая таблица, которая выглядит следующим образом:

enter image description here

Все, что мне нужно, это СУММ баллы для конкретного c игрока (Джон) в Его последние 3 матча быть где-нибудь в этом диапазоне.

Существует ли какая-либо подобная формула, которая может выполнять только последние 3 совпадения?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2020

Я думаю, что SUMPRODUCT может привести вас туда с некоторыми построенными массивами, используя COUNTIFS () и ROW (), чтобы получить самые последние 3.

Эта формула:

=SUMPRODUCT((COUNTIFS(A:B,G2,ROW(A:B)*{1,1},">="&ROW(A:B)*{1,1})<=3)*(A:B=G2),C:D)

на этот лист Я сделал, кажется, работает.

1 голос
/ 29 апреля 2020

Я думаю, у меня есть формула, которая дает то, что вы хотите. Это не красиво, и я уверен, что это можно сделать проще, но это работает:

=query( query(
       { arrayformula(   {ROW(A1:A)         } ),
         query(A1:D,"select A, B, C, D",1)
       } , "select * order by Col1 desc",1),
 "select Col2, Col3, Col4, Col5    
  where (Col2 ='John' or Col3 = 'John')   
  order by Col1 desc limit 3",1)

По сути, это добавляет номер строки в качестве дополнительного столбца к данным, чтобы мы могли отсортировать данные в обратном порядке по номеру строки. Затем мы запрашиваем результат, чтобы найти первые три вхождения «Иоанна», либо в столбце A, либо в столбце B.

Вот образец листа: https://docs.google.com/spreadsheets/d/1-mhTb5Cpp3D-1OltlmCfwlmM-vc2OknHxfJAyHD7BjI/edit?usp=sharing

Благодарим Эрика Тайлера за предыдущий ответ на другой вопрос о том, как добавить номер строки в запрос.

Редактировать: Обновлен лист, теперь он предоставляет СУММУ баллов Джона (или любого игрока) из последние три матча. Это может быть объединено с предыдущей формулой, если вы хотите разместить одну формулу где-нибудь. Или у вас будет список всех игроков, и вы хотите, чтобы их последние три счета были рядом с каждым из их имен?

Если я смогу упростить формулу, я обновлю ее здесь.

Дайте мне знать, если вам нужно что-то большее, или если это ответило на ваш вопрос.

0 голосов
/ 29 апреля 2020

Approach

Я бы использовал формулу запроса, чтобы получить нужные ячейки, чтобы вы могли использовать оператор limit.

Вы должны поместить столбец с индексами, чтобы Вы можете упорядочить ячейки в порядке убывания и взять первые 3.

Учитывая, что ваши заголовки таблиц:

+-----------------------------------------------+
| INDEX | NAME 1 | NAME 2 | POINTS 1 | POINTS 2 |
+-----------------------------------------------+

Я бы использовал этот запрос, чтобы получить желаемый результат:

=SUMPRODUCT(QUERY(A2:E, "Select D * E where B = 'John' or C = 'John'" order by A desc limit 3"))
...