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

图片供参考

在这里输入图像说明

我试图做到以下几点:如果(在列表1中find单元格A1),find它的每一行, if(C4:C10 > B4:B10) ,那么median(the subtraction between C and B values, for every row that has text1)

我试过两个不同的公式:

{=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 

您不能在这些公式中使用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)

这不需要“数组input”,但只能在Excel 2010或更高版本中使用。 AVERAGE没有简单的等价物

17代表QUARTILE函数 – 第二个四分位数相当于中位数

请参阅附上的截图,展示您的示例数据….和一些添加的文本的最后两个公式

Excel截图

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

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

这是一个数组公式,所以按Ctrl + Shift + Enter计算公式。 告诉我,如果它不起作用。