MS Excel中的条件中位数

我试图计算一个看起来像这样的图表的条件中位数:

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

我正在使用MS Excel 2007.我知道AVERAGEIF()语句,但没有中值的等价物。 主要的技巧是有没有数据的行 – 比如上面的第四个“a”。 在这种情况下,我不想在计算中考虑这一行。

谷歌searchbuild议如下,但Excel不会接受公式的格式(也许是因为它是2007年?)

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

Excel提供了一个错误,说我的公式有什么问题(与条件中的*有关)我也尝试了以下操作,但是它将空白单元格计算为0:

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

我知道这些公式返回Excel“数组”,这意味着必须input“Ctrl-shift-enter”才能使其正常工作。

我如何做一个有条件的评估,而不是考虑空白单元格?

嵌套的if语句。

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

没有多less解释 – 它检查是否是x。 如果是,则检查B是否非空白。 任何符合这两个条件的东西都会被计算为中位数的一部分。

鉴于以下数据集:

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

上面的公式返回3.5,这是我相信你想要的。

使用谷歌search公式,但不是在将其键入公式栏后 Enter ,而是同时按Ctrl + Shift + Enter (而不是Enter )。 这将围绕公式放置括号,并将其视为一个数组。

被警告,如果你编辑它,你不能再次按Enter键或公式将无效。 如果进行编辑,则必须在完成后执行同样的操作( Ctrl + Shift + Enter )。

还有一种方法不涉及需要CtrlShiftEnter操作的数组公式。 它使用Excel 2010,2011及更高版本中提供的Aggregate()函数。 该方法也适用于最小,最大和各种百分位数。 Aggregate()允许忽略错误,所以诀窍是使所有不需要的值都会导致错误。 最简单的方法就是做上面的任务是:

(B:B)/((A:A =“x”)*(B:B“”)),0.5)

第一个和最后一个参数设置场景做一个百分点50%,这是一个中位数,第二个说忽略所有的错误(包括DIV#0),第三个说selectB列的数据,并用一个数字一个是在A列中有一个x的所有非空值,否则是一个零。 零由零exception创build一个除法,将被忽略,因为/ 1 = a和a / 0 = Div#0

该技术对于四分位数(具有适当的p值),当然是所有其他百分位数,对于max和min使用具有适当参数的大或小函数。

这与Sumproduct()技巧非常stream行,但不能用于任何分位数或最小值,因为它产生看起来像这些函数的数字的零。

鲍勃·乔丹

也许把它推广一点,而不是这个…

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

…你可以使用以下内容:

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

注意花括号是指数组公式; 您不应该在方程式中放置方括号,而是在input公式时按CTRL + SHIFT + ENTER(或者CMD + SHIFT + ENTER在macOS上)

然后,通过将最后一个数字从2分别改为13,可以很容易地得到第一和第三四分位数。 QUARTILE.EXC是大多数商业统计软件(如Minitab)使用的方式。 “常规”function是QUARTILE.INC,或者对于旧版本的Excel,只是QUARTILE。