繁体   English   中英

MS Excel中的条件中位数

[英]Conditional median in MS Excel

我正在尝试计算图表的条件中位数,如下所示:

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

我正在使用MS Excel 2007.我知道AVERAGEIF()语句,但没有相应的中位数。 主要技巧是有没有数据的行 - 例如上面的第4个“a”。 在这种情况下,我不希望在计算中考虑这一行。

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

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

Excel给出一个错误,说我的公式有问题(与条件中的*有关)我也尝试过以下方法,但它在计算中将空白单元格计为0:

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

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

如何进行条件评估而不考虑空白单元格?

嵌套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,这是我认为你想要的。

使用Google搜索公式,但在您在公式栏中键入后不是按Enter键 ,而是同时按Ctrl + Shift + Enter (而不是Enter )。 这会在公式周围放置括号,并将其视为数组。

请注意,如果您编辑它,则无法再次按Enter键或公式无效。 如果编辑,完成后必须执行相同的操作( Ctrl + Shift + Enter )。

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

=总计(16,6,(B:B)/((A:A =“x”)*(B:B <>“”)),0.5)

第一个和最后一个参数将场景设置为百分位数50%,这是一个中位数,第二个表示忽略所有错误(包括DIV#0),第三个表示选择B列数据,并将其除以一个数字,即一个用于在A列中具有x的所有非空值,否则为零。 零会创建除零异常,并且将被忽略,因为a / 1 = a和a / 0 = Div#0

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

这是与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(或在macOS上使用CMD + SHIFT + ENTER)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM