Условная медиана в MS Excel

Я пытаюсь вычислить условную медиану диаграммы, которая выглядит так:

A  |  B
-------
x  |  1
x  |  1
x  |  3
x  |  
y  |  4
z  |  5

Я использую MS Excel 2007. Я знаю утверждение AVERAGEIF (), но нет эквивалента для медианы. Главный трюк заключается в том, что есть строки без данных - например, 4-й "a" выше. В этом случае я не хочу, чтобы эта строка вообще учитывалась в расчетах.

Googling предложил следующее, Но Excel не примет формат формулы (возможно, потому, что это 2007?)

=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B)

Excel дает ошибку, говоря, что что-то не так с моей формулой(что-то связано с * в условии) я также пробовал следующее, Но он считает пустые ячейки как 0 в расчетах:

=MEDIAN(IF(A:A = "x", B:B, "")

Я знаю, что эти формулы возвращают Excel "массивы", что означает, что нужно ввести "Ctrl-shift-enter", чтобы заставить его работать правильно.

как я могу сделать условную оценку и не считать пустые ячейки?

4 ответов


вложенные операторы if.

=MEDIAN(IF(A:A = "x",IF(B:B<>"",B:B, ""),"")

не так много, чтобы объяснить - он проверяет, является ли A x. Если это так, он проверяет, является ли B непустым. Все, что соответствует обоим условиям, вычисляется как часть медианы.

учитывая следующий набор данных:

A | B
------
x | 
x |     
x | 2
x | 3
x | 4
x | 5

приведенная выше формула возвращает 3.5, что я считаю, что вы хотели.


используйте формулу Googled, но вместо нажатия Enter после ввода в строку формул нажмите Ctrl+ Shift+ Enter одновременно (вместо Enter). Это помещает скобки вокруг формулы и будет рассматривать ее как массив.

будьте осторожны, если вы редактируете его, вы не можете нажать Enter снова или формула не будет действовать. Если редактирование, вы должны сделать то же самое, когда сделано ( Ctrl+ Shift+ Enter).


существует другой способ, который не включает формулу массива, которая требует операции CtrlShiftEnter. Он использует функцию Aggregate (), предлагаемую в Excel 2010, 2011 и за его пределами. Метод также работает для min, max и различных процентилей. Aggregate () позволяет игнорировать ошибки, поэтому трюк состоит в том, чтобы сделать все значения, которые не являются обязательными, причиной ошибок. Самый простой способ-выполнить поставленную выше задачу:

=Совокупность(16,6,(B:B)/((A: A = "x")*(B:B"")),0.5)

первый и последний параметры устанавливают сцену, чтобы сделать процентиль 50%, который является медианой, второй говорит игнорировать все ошибки (включая DIV#0), а третий говорит, выберите данные столбца B и разделите его на число, которое является одним для всех непустых значений, которые имеют x в столбце A, и ноль в противном случае. Нули создают исключение деления на ноль и будут игнорироваться, потому что A/1=a и A / 0=Div#0

метод работает для квартилей (с соответствующее значение p), все остальные процентили, конечно, и для max и min, используя большую или малую функцию с соответствующими аргументами.

Это аналогичная конструкция трюков Sumproduct (), которые так популярны, но которые не могут быть использованы на любых квантилях или максимальных минимальных значениях, поскольку он производит нули, которые выглядят как числа для этих функций.

Боб Джордан


возможно, чтобы обобщить его немного больше, вместо этого...

{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))}

... вы можете использовать следующее:

{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)}

обратите внимание, что фигурные скобки относятся к формуле массива; вы не должны помещать скобки в формулу, но нажмите CTRL+SHIFT+ENTER (или CMD+SHIFT+ENTER на macOS) при вводе формулы

тогда вы можете легко получить первый и третий квартиль, изменив последнее число из 2 в 1 или 3 соответственно. КВАРТИЛЬ.EXC-это то, что использует большинство коммерческих статистических программ (например, Minitab). "Регулярная" функция-квартиль.INC, или для более старых версий Excel, просто квартиль.