Просто для удовольствия, вот другое решение, только для образовательных целей.
Гораздо больше ручного, но избегает формулы массива CSE.
=IF(
ISODD(COUNTIFS($A$2:$A$9,$D2)),
SUMPRODUCT(
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)+1)/2)
),
SUMPRODUCT(
(
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)/2))
+
SMALL($B$2:$B$9*($A$2:$A$9=$D2), (COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2))+(COUNTIFS($A$2:$A$9,$D2)/2)+1)
)/2
)
)
IF
проверяет, существует ли нечетное число значений в интересующей нас группе, поскольку медиана вычисляется по-разному для нечетного и четного числа значений.
Мы можем использовать SMALL
, чтобы найти n-е наименьшее число. Мы можем использовать $B$2:$B$9*($A$2:$A$9=$D2)
, чтобы установить все значения в группах, которые нам не интересны, в ноль.
Чтобы получить количество значений, а не в интересующей нас группе, мы можем использовать COUNT($B$2:$B$9)-COUNTIFS($A$2:$A$9,$D2)
.
Нам просто нужно добавить половину количества значений в интересующей нас группе: COUNTIFS($A$2:$A$9,$D2)/2
.
Если в группе есть нечетное количество значений, мы находимсяинтересует, что с нами сделано. Однако, если есть четное количество значений, мы должны взять среднее из двух средних чисел. Это делается путем добавления этой формулы SMALL
к другой формуле SMALL
с n + 1: (COUNTIFS($A$2:$A$9,$D2)/2)+1
и делением на 2.
Поскольку мы имеем дело с массивами, нам нужно обернуть эти формулы в SUMPRODUCTS
.
Как я уже сказал, вам, вероятно, не стоит использовать это решение, поскольку оно значительно сложнее, чем ответ М. Шалка, но я все равно поделюсь.