中位数/平均值不会返回正确的值

时间:2015-04-19 22:29:05

标签: excel excel-formula excel-2010 excel-2007 excel-2013

Image for reference

enter image description here

我正在努力实现以下目标: if(在列表1中找到单元格A1),对于找到它的每一行if(C4:C10 > B4:B10),然后median(the subtraction between C and B values, for every row that has text1)

我尝试了两种不同的公式:

1 - {=MEDIAN(IF(AND((C4:C10>B4:B10);(B4:B10=A1));(C4:C10-B4:B10)))}

2 - {=MEDIAN((C4:C10>B4:B10)*(B4:B10=A1)*(C4:C10-B4:B10))}

对于中位数,它总是返回0,对于平均值非常准确的小值。我确定中位数和平均值不正确。

问题是什么?

另外,我将如何使用以下内容: {=MEDIAN((C4:C10>B4:B10)*(B4:B10=A1)*(C4:C10-B4:B10))}

如果其中一列的某些行中有文字? (前一个问题并非如此,但之前已经出现过)。


text1                   

list 1      list 2      list 3
text2       1           5
text4       2           4
text1       4           6
text4       1           6
text1       4           5
text4       2           4
text1       3           3

2 个答案:

答案 0 :(得分:3)

您不能在这些类型的公式中使用AND函数,因为AND会根据需要返回单个结果(TRUEFALSE)而不是数组。

你的第二个公式更接近,但是通过乘以所有条件,你将在不满足条件的每一行得到零,从而扭曲结果。

您可以使用以下任一类似版本:

=MEDIAN(IF((C4:C10>B4:B10)*(A4:A10=A1);C4:C10-B4:B10))

=MEDIAN(IF(C4:C10>B4:B10;IF(A4:A10=A1;C4:C10-B4:B10)))

两者都需要用 CTRL + SHIFT + ENTER 确认

要处理列BC中的文字(并使公式忽略这些行但不起作用),您可以添加一个额外的IF函数,如下所示

=MEDIAN(IF(C4:C10>B4:B10;IF(A4:A10=A1;IF(ISNUMBER(C4:C10-B4:B10);C4:C10-B4:B10))))

所有公式都可以使用AVERAGE函数代替MEDIAN

在忽略文本的同时获取MEDIAN的另一种方法是使用AGGREGATE函数,如下所示:

=AGGREGATE(17;6;C4:C10-B4:B10/(C4:C10>B4:B10)/(A4:A10=A1);2)

这不需要“数组输入”,但只能在Excel 2010或更高版本中使用。 AVERAGE

没有简单的等价物

17表示QUARTILE函数 - 第二个四分位数相当于中位数

参见随附的屏幕截图,演示了包含样本数据的最后两个公式....以及一些添加的文本

Excel screenshot

答案 1 :(得分:1)

假设column C 列表3 中的值大于column B 列表2 中的值,那么您可以使用以下公式:

=MEDIAN(IF((A4:A10=A1)*(C4:C10>B4:B10);C4:C10-B4:B10))



这是一个数组公式,所以按 ctrl + shift + 输入来计算公式。 告诉我它是否有用。