Итак, вот моя попытка:
Формула в G2
:
{=AVERAGEIFS($C$2:$C$21,$B$2:$B$21,F2,$D$2:$D$21,">="&LARGE(IF($B$2:$B$21=F2,$D$2:$D$21),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)))}
Обратите внимание, что это формула массива, введенная через Ctrl Shift Ввод
Шаги:
1) Сначала нам нужно узнать количество ходов, которые составляют 25% от общего количества этого типа: =ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)
2) Далее нам нужно узнать, через что проходит это n-е наибольшее значение: {=LARGE(IF($B$2:$B$21=F2,$D$2:$D$21),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0))}
3) Теперь у нас есть наша отметка, и мы можем получить все значения, которые >=
, чем эта отметка, с помощью нашей объединенной формулы AVERAGEIFS()
.
Обратите внимание, что в этом случае (со всеми разными датами) он будет работать нормально, но может возникнуть проблема, когда даты n-го по величине могут быть одинаковыми, так как >=
поймает несколько попаданий в своем расчете. Надеюсь, что это имеет смысл: S
В этом случае вам следует попробовать:
{=SUMPRODUCT(($B$2:$B$21=F2)*(ROW($B$2:$B$21)<=SMALL(IF($B$2:$B$21=F2,ROW($B$2:$B$21)-MIN(ROW($B$2:$B$21))+2),ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)))*($C$2:$C$21))/ROUND(COUNTIF($B$2:$B$21,F2)*0.25,0)}