MS Excel中的条件中位数

Coo*_*ame 13 excel worksheet-function median

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

A  |  B
-------
x  |  1
x  |  1
x  |  3
x  |  
y  |  4
z  |  5
Run Code Online (Sandbox Code Playgroud)

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

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

=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B)
Run Code Online (Sandbox Code Playgroud)

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

=MEDIAN(IF(A:A = "x", B:B, "")
Run Code Online (Sandbox Code Playgroud)

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

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

Cod*_*tch 9

嵌套if语句.

=MEDIAN(IF(A:A = "x",IF(B:B<>"",B:B, ""),"")
Run Code Online (Sandbox Code Playgroud)

没什么可解释的 - 它会检查A是否为x.如果是,则检查B是否为非空白.任何符合这两个条件的东西都会计算为中位数的一部分.

给定以下数据集:

A | B
------
x | 
x |     
x | 2
x | 3
x | 4
x | 5
Run Code Online (Sandbox Code Playgroud)

上面的公式返回3.5,这是我认为你想要的.

  • 我必须使它成为数组公式才能起作用。即`{= MEDIAN(IF(A:A =“ x”,IF(B:B &lt;&gt;“”,B:B))}`对我有用(其他语句不是必需的)。 (3认同)

小智 6

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

请注意,如果您编辑它,则无法Enter再次点击或公式无效.如果编辑,完成后必须做同样的事情(Ctrl+ Shift+ Enter).


小智 5

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

=Aggregate(16,6,(B:B)/((A:A = "x")*(B:B<>"")),0.5)

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

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

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

鲍勃·乔丹