[英]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更改为1或3来轻松获得第一和第三四分位数。 QUARTILE.EXC是大多数商业统计软件(例如Minitab)使用的方式。 “常规”功能是QUARTILE.INC,或者对于旧版本的Excel,只是QUARTILE。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.