如果在不同表中满足多个条件,则求和值

时间:2015-01-18 20:29:28

标签: excel excel-formula

我有一张表创建名称到值的映射(Map_Sheet)。在另一个工作表中,映射表(Data_Sheet)中的每个名称都有值。我想要做的是根据映射表中的某些条件添加值。例如:我想通过面包和颜色添加所有狗的数量。因此,在映射表中,我会查找所有棕色和特定面包的狗并获取其名称并手动将它们添加到一起。我希望有一个基于Map_Sheet中的多个条件进行添加的公式。

以下是数据示例:

Map_Sheet-
name|bread|color|age
a     x     b     2
b     y     w     3
c     x     b     2
d     z     f     4

Data_Sheet -
id|a|b|c|d
0  3 4 2 1
1  1 2 4 2
2  3 5 7 2
3  1 2 6 9
4  1 3 5 7

对于数据表中的每个ID,我想要一个颜色为B的面包X的计数。所以我会为A和C添加ID0值,(3 + 2) - 所以每个id的ID0 = 5等。

我无法使用VBA所以我正在研究使用INDEX和MATCH,但我无法绕过它。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果第一个工作表中的行标题与第二个工作表中的列标题匹配,则可以将此公式放在第二个工作表的(例如)G2中。

=SUM(TRANSPOSE(Map!$C$2:$C$5="b")*C2:F2)

如果第二张表格中的列标题的顺序不同,则必须使用以下内容: -

=SUM(C2:F2*NOT(ISERROR(MATCH($C$1:$F$1,IF(Map!$C$2:$C$5="b",Map!$A$2:$A$5),0))))

这两个都是数组公式。您可以使用相同的基本模式添加额外条件来选择品种和颜色: -

=SUM(TRANSPOSE((Map!$C$2:$C$5="b")*(Map!$B$2:$B$5="x"))*C2:F2)

=SUM(C2:F2*NOT(ISERROR(MATCH($C$1:$F$1,IF((Map!$C$2:$C$5="b")*(Map!$B$2:$B$5="x"),Map!$A$2:$A$5),0))))

enter image description here