13

I'm trying to calculate the conditional median of a chart that looks like this:

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

I'm using MS Excel 2007. I am aware of the AVERAGEIF() statement, but there is no equivalent for Median. The main trick is that there are rows with no data - such as the 4th "a" above. In this case, I don't want this row considered at all in the calculations.

Googling has suggested the following, but Excel won't accept the formula format (maybe because it's 2007?)

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

Excel gives an error saying there is something wrong with my formula(something to do with the * in the condition) I had also tried the following, but it counts blank cells as 0's in the calculations:

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

I am aware that those formulas return Excel "arrays", which means one must enter "Ctrl-shift-enter" to get it to work correctly.

How can I do a conditional evaluation and not consider blank cells?

4

4 回答 4

9

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

于 2009-04-12T23:02:50.883 回答
7

使用谷歌搜索的公式,但不要Enter在将其输入到公式栏中后点击,而是同时点击Ctrl++ (而不是Shift)。这会在公式周围放置括号并将其视为数组。EnterEnter

请注意,如果您对其进行编辑,则不能Enter再次点击,否则公式将无效。如果编辑,您必须在完成后做同样的事情(Ctrl+ Shift+ Enter)。

于 2011-08-18T01:27:33.117 回答
5

还有一种不涉及数组公式的方式,需要 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() 技巧类似,但它不能用于任何分位数或最大最小值,因为它会产生看起来像这些函数的数字的零。

鲍勃乔丹

于 2014-11-13T00:07:52.717 回答
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更改为13轻松获得第一个和第三个四分位数。顺便说一句,QUARTILE.EXC 是大多数商业统计软件(例如 Minitab)使用的。“常规”函数是 QUARTILE.INC,或者对于旧版本的 Excel,只是 QUARTILE。

于 2017-07-27T18:33:48.567 回答