我正在努力实现以下目标:
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
答案 0 :(得分: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)
这不需要“数组输入”,但只能在Excel 2010
或更高版本中使用。 AVERAGE
17
表示QUARTILE
函数 - 第二个四分位数相当于中位数
参见随附的屏幕截图,演示了包含样本数据的最后两个公式....以及一些添加的文本
答案 1 :(得分:1)
假设column C
列表3 中的值大于column B
列表2 中的值,那么您可以使用以下公式:
=MEDIAN(IF((A4:A10=A1)*(C4:C10>B4:B10);C4:C10-B4:B10))
这是一个数组公式,所以按 ctrl + shift + 输入来计算公式。
告诉我它是否有用。