MS Excel中的条件中值

MS Excel中的条件中值,excel,worksheet-function,median,Excel,Worksheet Function,Median,我试图计算一张图表的条件中位数,如下所示: A | B ------- x | 1 x | 1 x | 3 x | y | 4 z | 5 我正在使用MS Excel 2007。我知道AVERAGEIF语句,但中位数没有等价物。主要的技巧是有没有数据的行-例如上面的4th a。在这种情况下,我不希望在计算中考虑这一行 谷歌提出了以下建议,但Excel不会接受公式格式,可能是因为现在是2007年 =MEDIAN(IF((A:A="x")*(A:A<>""

我试图计算一张图表的条件中位数,如下所示:

A  |  B
-------
x  |  1
x  |  1
x  |  3
x  |  
y  |  4
z  |  5
我正在使用MS Excel 2007。我知道AVERAGEIF语句,但中位数没有等价物。主要的技巧是有没有数据的行-例如上面的4th a。在这种情况下,我不希望在计算中考虑这一行

谷歌提出了以下建议,但Excel不会接受公式格式,可能是因为现在是2007年

=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B)
我知道这些公式返回Excel数组,这意味着必须输入Ctrl-shift-enter才能使其正常工作

如何进行条件评估而不考虑空白单元格?< /p> 嵌套if语句。

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

上面的公式返回3.5,我相信这是您想要的。

使用谷歌公式,但在公式栏中键入后,不要按Enter键,而是同时按Ctrl+Shift+Enter键,而不要按Enter键。这将在公式周围放置括号,并将其视为数组


请注意,如果您对其进行编辑,则不能再次按Enter键,否则公式将无效。如果进行编辑,则在完成Ctrl+Shift+Enter操作时必须执行相同的操作。

还有一种方法不涉及需要CtrlShift Enter操作的数组公式。 它使用Excel 2010、2011及以后版本中提供的聚合函数。该方法也适用于最小、最大和各种百分位数。 聚合允许忽略错误,因此技巧是使所有不需要的值都导致错误。最简单的方法是执行上面设置的任务:

=聚合16,6,B:B/A:A=x*B:B,0.5

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

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

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


Bob Jordan

也许更概括一点,而不是这个

{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))}
。。。您可以使用以下选项:

{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)}
请注意,花括号指的是数组公式;输入公式时,不应将括号放在公式中,而应在macOS上按CTRL+SHIFT+ENTER或CMD+SHIFT+ENTER


然后,通过将最后一个数字分别从2改为1或3,可以很容易地得到第一个和第三个四分位数。QUARTILE.EXC是大多数商业统计软件(例如Minitab)使用的工具。常规函数为QUARTILE.INC,或者对于旧版本的Excel,仅为QUARTILE。

如果您希望像我这样避免使用数组,Bob的解决方案效果很好,可以根据需要使用任意多的条件进行自定义。这对我很有效。我和betterI一起工作的数组越少,我就必须将它作为一个数组公式来工作。也就是说,{=MEDIANIFA:A=x,IFB:B,B:B}对我有效,else语句是不必要的。尽管如此,答案还是很好!
{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))}
{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)}