Median/average 没有 return 正确的值
Median/average does not return the right values
我正在努力实现以下目标:
如果(单元格 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 单个结果(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[=30=确认]
要处理 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)
不需要 "array entry",但只适用于 Excel 2010
或更高版本。 AVERAGE
没有简单的等价物
17
表示 QUARTILE
函数 - 第二个四分位数相当于中位数
请参阅随附的屏幕截图,其中展示了最后两个公式以及您的示例数据....以及一些添加的文本
我正在努力实现以下目标:
如果(单元格 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 单个结果(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[=30=确认]
要处理 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)
不需要 "array entry",但只适用于 Excel 2010
或更高版本。 AVERAGE
17
表示 QUARTILE
函数 - 第二个四分位数相当于中位数
请参阅随附的屏幕截图,其中展示了最后两个公式以及您的示例数据....以及一些添加的文本