多列if语句 – Excel

我试图find一个公式来检查两个不同列中的条件,然后计算相应值的平均值。 以下示例反映了我想实现的目标。 比方说,我想find西北城市的平均水平。

我已经用这样一个数组函数确定了西方城市的平均水平:

=AVERAGE(IF($C$3:$C$10={"LA","SF","POR","SEA"},$D$3:$D$10)) 

然后按Ctrl + Shift + Enter

由于我的数据是如何组织的,这个以前的公式是唯一可以确定(有点手动)一个城市是位于东部还是西部海岸的方法。

现在我错过了会说“ 还有,如果上一列说'北'

在这里输入图像说明

用数组函数更新

第一次尝试

所以起初我以为你可以像这样添加第二个条件到数组函数:

 =AVERAGE(IF(AND($C$2:$C$9={"LA","SF","POR","SEA"},$B$2:$B$9={"North"}),$D$2:$D$9)) 

AND会要求每个项目是真实的,但这似乎没有奏效 …和数组函数是棘手的野兽去debugging。

第二次尝试

相反,你可以做的是用第二个IF来扩展IF函数 。 所以如果第一个是真的,那么这个值应该返回另一个检查第二个标准的IF。 只有符合这两个标准,才能返回分数,否则它将不会返回任何东西,而不会被平均函数拾取。

所以最后的东西应该是这样的:

 =AVERAGE(IF($C$2:$C$9={"LA","SF","POR","SEA"},IF($B$2:$B$9={"North"},$D$2:$D$9))) 

命名数组

由于您无法创build一列来存储与西方哪个城市相关的数据,如果您有方法可以轻松地更新此信息,而不是在整个函数中对其进行硬编码,那么这将是最好的。 你可以做的一件事就是定义一个名字以便以后参考。

只需进入Formulas Ribbon> Defined Names Section> Name Manager> New

然后创build西部城市值的数组作为稍后使用的命名参数

命名的价值

那么你可以在公式中使用它来代替这样的数组:

 =AVERAGE(IF(C2:C9=WestCities,IF(B2:B9="North",D2:D9))) 

命名的用法

使用数据透视表

这是我的build议:

首先,为East / West添加一列,这样就不会将数据填充到公式中

数据

然后添加一个数据透视表,它会为你做所有的计算。

像这样设置(确保按平均值(而非总和)进行汇总:

数据透视表设置

它会看起来像这样:

枢

如果你想保持你的原始格式,你可以像这样运行数据透视表的公式:

 =GETPIVOTDATA("Score",Sheet4!$A$3,"E/W","West","S/N","North") 

枢轴公式

与西方列

另外,如果你有能力添加一个西方的列,你可以很容易地检查这与AVERAGEIFS有这样的多个标准:

 =AVERAGEIFS(D2:D9,A2:A9,"West",B2:B9,"North") 

AVERAGEIFS