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分别改为1或3,可以很容易地得到第一和第三四分位数。 QUARTILE.EXC是大多数商业统计软件(如Minitab)使用的方式。 “常规”function是QUARTILE.INC,或者对于旧版本的Excel,只是QUARTILE。