Median/average 没有 return 正确的值

Median/average does not return the right values

Image for reference

我正在努力实现以下目标: 如果(单元格 A1 在列表 1 中找到),对于找到它的每一行和 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))}

对于中位数,它总是 returns 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

假设 column C 中的值,即 list 3 大于 column B 中的值,即 list 2,那么可以用下面的公式:

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



这是一个数组公式,所以按ctrl+shift+enter计算公式。 如果它不起作用,请告诉我。

您不能在这些类型的公式中使用 AND 函数,因为 AND returns 单个结果(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[=30=确认]

要处理 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)

不需要 "array entry",但只适用于 Excel 2010 或更高版本。 AVERAGE

没有简单的等价物

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

请参阅随附的屏幕截图,其中展示了最后两个公式以及您的示例数据....以及一些添加的文本