我正在使用averageifs函数,并且有一列需要在其中一个条件为真的情况下计算平均值。我试过使用OR函数,也试过花括号,但都给予我错误。=平均值(N1:N612,I1:I612,{“FL”,“IF”})有更多的范围,但这些编码是好的。为了清楚起见,我想返回一个平均值,如果列“I”包含(特别是)字母FL,或字母IF。任何其他字母应该意味着输入没有被平均。TIA!
w8f9ii691#
AVERAGEIFS extra criteria是一个布尔AND运算符,它不能执行OR运算。但是由于你的列没有改变,我们可以自己实现它:下面是使用数组公式的简单方法(使用ctrl + shift + enter组合键输入):
AVERAGEIFS
=AVERAGE(IF((I1:I612="IF")+(I1:I612="FL"),N1:N612))
或者,如果你不喜欢使用数组公式,基本上可以使用SUMPRODUCT和COUNTIF手动完成:
SUMPRODUCT
COUNTIF
=SUMPRODUCT((I1:I612="IF")*(N1:N612)+(I1:I612="FL")*(N1:N612))/(COUNTIF(I1:I612,"IF")+COUNTIF(I1:I612,"FL"))
ffvjumwh2#
Chancea给出了一些很好的技巧,我将再列出一个避免数组公式的技巧,因为许多人会发现避免和积更容易阅读。
=(SUMIF(I1:I612,"FL",N1:N612)+SUMIF(I1:I612,"IF",N1:N612))/(COUNTIF(I1:I612,"FL")+COUNTIF(I1:I612,"IF"))
wi3ka0sx3#
不要以为Excel有这个功能,但在Google Sheets中,我已经用下面的方法达到了类似的效果
=average(filter($A:$A,($C:$C=$E$6)+($C:$C=$E$7)))
给出A:A中的值的平均值,其中C:C与E6或E7中的值匹配与ifs/sumifs等不同,过滤器使用=,而不是逗号,因此使用$C:$C=$E$6,而不是$C:$C,$E$6刚刚输入了数学符号(因此是<>而不是"<>"&)
A:A
C:C
E6
E7
ifs
sumifs
=
$C:$C=$E$6
$C:$C,$E$6
<>
"<>"&
enyaitl34#
解决这个问题的另一种方法是创建一个附加列(我们称之为列J),如果列I包含“FL”或“IF”,则该列返回TRUE:
J1 = IF(OR(I1="FL",I1="IF"),TRUE,FALSE)
然后,您可以在AVERAGEIFS公式中引用该列:
=AVERAGEIFS(N1:N612,J1:JI612,TRUE)
voj3qocg5#
您问题的解决方案是:=平均值(最大值(N1:N612,I1:I612,{“FL”;“如果”}))
5条答案
按热度按时间w8f9ii691#
AVERAGEIFS
extra criteria是一个布尔AND运算符,它不能执行OR运算。但是由于你的列没有改变,我们可以自己实现它:下面是使用数组公式的简单方法(使用ctrl + shift + enter组合键输入):
或者,如果你不喜欢使用数组公式,基本上可以使用
SUMPRODUCT
和COUNTIF
手动完成:ffvjumwh2#
Chancea给出了一些很好的技巧,我将再列出一个避免数组公式的技巧,因为许多人会发现避免和积更容易阅读。
wi3ka0sx3#
不要以为Excel有这个功能,但在Google Sheets中,我已经用下面的方法达到了类似的效果
给出
A:A
中的值的平均值,其中C:C
与E6
或E7
中的值匹配与
ifs
/sumifs
等不同,过滤器使用=
,而不是逗号,因此使用$C:$C=$E$6
,而不是$C:$C,$E$6
刚刚输入了数学符号(因此是
<>
而不是"<>"&
)enyaitl34#
解决这个问题的另一种方法是创建一个附加列(我们称之为列J),如果列I包含“FL”或“IF”,则该列返回TRUE:
然后,您可以在AVERAGEIFS公式中引用该列:
voj3qocg5#
您问题的解决方案是:
=平均值(最大值(N1:N612,I1:I612,{“FL”;“如果”}))