Excel 中值/平均值不返回正确的值

Excel 中值/平均值不返回正确的值,excel,excel-formula,excel-2010,excel-2007,excel-2013,Excel,Excel Formula,Excel 2010,Excel 2007,Excel 2013,我正在努力实现以下目标: 如果(在列表1中找到单元格A1),对于找到它的每一行和if(C4:C10>B4:B10),则中值(对于每个有文本1的行,C和B值之间的减法) 我尝试了两种不同的公式: 1-{=MEDIAN(如果(和((C4:C10>B4:B10);(B4:B10=A1));(C4:C10-B4:B10))} 2-{=中值((C4:C10>B4:B10)*(B4:B10=A1)*(C4:C10-B4:B10)) 对于中值,它总是返回0;对于不准确的平均值,它总是返回很小的值。我确信中位数

我正在努力实现以下目标: 如果(在列表1中找到单元格A1),对于找到它的每一行和
if(C4:C10>B4:B10)
,则
中值(对于每个有文本1的行,C和B值之间的减法)

我尝试了两种不同的公式:

1-
{=MEDIAN(如果(和((C4:C10>B4:B10);(B4:B10=A1));(C4:C10-B4:B10))}

2-
{=中值((C4:C10>B4:B10)*(B4:B10=A1)*(C4:C10-B4:B10))

对于中值,它总是返回0;对于不准确的平均值,它总是返回很小的值。我确信中位数和平均数是不正确的

问题是什么

此外,我将如何使用以下内容:
{=MEDIAN((C4:C10>B4:B10)*(B4:B10=A1)*(C4:C10-B4:B10))

如果其中一列的某些行中有文本?(前一个问题并非如此,但它以前就出现过)。



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

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


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

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

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


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

您不能在这些类型的公式中使用
函数,因为
返回的结果(
TRUE
FALSE
)不是所需的数组

您的第二个公式更接近,但通过将所有条件相乘,您将得到不满足条件的每一行的零,从而扭曲结果

您可以使用以下类似版本之一:

=中值(如果((C4:C10>B4:B10)*(A4:A10=A1);C4:C10-B4:B10))

=中值(如果(C4:C10>B4:B10;如果(A4:A10=A1;C4:C10-B4:B10))

两者都需要通过CTRL+SHIFT+ENTER进行确认

要处理列
B
C
中的文本(并使公式忽略这些行,但在其他情况下有效),可以添加一个额外的
IF
函数,如下所示

=中值(如果(C4:C10>B4:B10;如果(A4:A10=A1;如果(ISNUMBER(C4:C10-B4:B10);C4:C10-B4:B10)))

使用
平均值
函数代替
中值

另一种在忽略文本的情况下获取
中值的方法是使用
AGGREGATE
函数,如下所示:

=骨料(17;6;C4:C10-B4:B10/(C4:C10>B4:B10)/(A4:A10=A1);2)

这不需要“数组条目”,但只适用于
Excel2010
或更高版本。
AVERAGE

17
表示
四分位数
函数-第二个四分位数等于中值

请参阅随附的屏幕截图,该截图用示例数据演示了最后两个公式……以及一些添加的文本


您不能在这些类型的公式中使用
函数,因为
返回单个结果(
TRUE
FALSE
)而不是需要的数组

您的第二个公式更接近,但通过将所有条件相乘,您将得到不满足条件的每一行的零,从而扭曲结果

您可以使用以下类似版本之一:

=中值(如果((C4:C10>B4:B10)*(A4:A10=A1);C4:C10-B4:B10))

=中值(如果(C4:C10>B4:B10;如果(A4:A10=A1;C4:C10-B4:B10))

两者都需要通过CTRL+SHIFT+ENTER进行确认

要处理列
B
C
中的文本(并使公式忽略这些行,但在其他情况下有效),可以添加一个额外的
IF
函数,如下所示

=中值(如果(C4:C10>B4:B10;如果(A4:A10=A1;如果(ISNUMBER(C4:C10-B4:B10);C4:C10-B4:B10)))

使用
平均值
函数代替
中值

另一种在忽略文本的情况下获取
中值的方法是使用
AGGREGATE
函数,如下所示:

=骨料(17;6;C4:C10-B4:B10/(C4:C10>B4:B10)/(A4:A10=A1);2)

这不需要“数组条目”,但只适用于
Excel2010
或更高版本。
AVERAGE

17
表示
四分位数
函数-第二个四分位数等于中值

请参阅随附的屏幕截图,该截图用示例数据演示了最后两个公式……以及一些添加的文本


但在您的示例中,C中的值没有一个大于B中的值。我遗漏了什么吗?它不符合你的第二个标准!但在你的例子中,C中的值没有一个比B中的值大。我遗漏了什么吗?它不符合你的第二个标准!你不是把B列和A列混淆了吗?A列包含需要匹配A1而不是B列的文本值。因此,在公式中,它们应该替换为A4:A10=A11。我只是使用问题中公式中使用的相同单元格引用。是的,但问题中的公式是错误的!这是问题原文中的一个错误。应该予以纠正。此外,单元格不能有一个文本值与A1的文本值匹配,同时也不能被减去!工作很好,谢谢你的详细解释!我基本上必须合并我尝试过的两个函数,看起来,阿哈伦,你不是把B列和A列混淆了吗?A列包含需要匹配A1而不是B列的文本值。因此,在公式中,它们应该替换为A4:A10=A11。我只是使用问题中公式中使用的相同单元格引用。是,但是