我正在尝试计算图表的条件中位数,如下所示:
A | B
-------
x | 1
x | 1
x | 3
x |
y | 4
z | 5
我正在使用MS Excel 2007.我知道AVERAGEIF()语句,但没有相应的Median。主要技巧是有没有数据的行 - 例如上面的第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”才能使其正常工作。
如何进行条件评估而不考虑空白单元?
答案 0 :(得分:8)
嵌套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,这是我认为你想要的。
答案 1 :(得分:6)
使用Google搜索公式,但在键入公式栏后点击 Enter ,而不是点击 Ctrl + Shift + 同时输入(而不是 Enter )。这会在公式周围放置括号,并将其视为数组。
警告,如果你编辑它,你不能再次点击 Enter ,否则公式将无效。如果编辑,完成后必须执行相同的操作( Ctrl + Shift + Enter )。
答案 2 :(得分:4)
还有另一种方法不涉及需要CtrlShiftEnter操作的数组公式。 它使用Excel 2010,2011及更高版本中提供的Aggregate()函数。该方法也适用于最小值,最大值和各种百分位数。 Aggregate()允许忽略错误,因此诀窍是使所有不需要的值导致错误。最简单的方法是执行上面的任务设置:
=聚合(16,6,(B:B)/((A:A =&#34; x&#34;)*(B:B&#&#34;&#34;)), 0.5)
第一个和最后一个参数将场景设置为百分位数50%,这是一个中位数,第二个表示忽略所有错误(包括DIV#0),第三个表示选择B列数据,并将其除以number,对于在A列中具有x的所有非空值,其中一个,否则为零。 零创建除零异常并将被忽略,因为a / 1 = a和a / 0 = Div#0
该技术适用于四分位数(具有适当的p值),当然所有其他百分位数,以及使用具有适当参数的大小函数的最大值和最小值。
这是与Sumproduct()技巧类似的构造,它们如此受欢迎,但不能用于任何分位数或最小值,因为它会产生看起来像这些函数的数字的零。
鲍勃乔丹答案 3 :(得分:1)
或许可以多说一点,而不是这个...
{=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。