中位数/平均值不会返回正确的值
图片供参考
我试图做到以下几点:如果(在列表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
返回单个结果( TRUE
或FALSE
)而不是数组。
你的第二个公式更接近,但通过乘以所有的条件,你会得到零的条件不满足的每一行,从而扭曲的结果。
您可以使用这些相似版本中的任何一个:
=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进行确认
要处理B
或C
列中的文本(并且要使公式忽略这些行,但是以其他方式工作),您可以添加一个额外的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
函数 – 第二个四分位数相当于中位数
请参阅附上的截图,展示您的示例数据….和一些添加的文本的最后两个公式
假设column C
中列表3中的值大于column B
中列表2中的值 ,则可以使用以下公式:
=MEDIAN(IF((A4:A10=A1)*(C4:C10>B4:B10);C4:C10-B4:B10))
这是一个数组公式,所以按Ctrl + Shift + Enter计算公式。 告诉我,如果它不起作用。