2012-12-18 21 views
3

我有一张表,我试图根据两个参考表的值填充。在EXCEL中使用多个表的条件SUM

我有各种不同的项目'类型1','类型2'等,每个项目运行4个月,并根据其生命周期的时间花费不同的金额。这些成本计算在Ref Table 1中显示。

参考表1

Month | a | b | c | d 
--------------------------------- 
Type 1 | 1 | 2 | 3 | 4 
Type 2 | 10 | 20 | 30 | 40 
Type 3 | 100 | 200 | 300 | 400 

Ref Table 2显示未来3个月我的项目进度。从1月开始有两个新的,一个是Type 1,另一个是Type 2。在二月,我有4个项目,前两个进入他们的第二个月和两个新的开始,但这次一1型和3型

参考表2

Date | Jan | Feb | Mar 
-------------------------- 
Type 1 | a | b | c 
Type 1 |  | a | b 
Type 2 | a | b | c 
Type 2 |  |  | a 
Type 3 |  | a | b 

我d希望创建一个表格,该表格计算每个项目类型每月花费的总成本。示例结果显示在Results表中。

结果

Date | Jan | Feb | Mar 
------------------------------- 
Type 1 | 1 | 3 | 5 
Type 2 | 10 | 20 | 40 
Type 3 | 0 | 100 | 200 

我试着用数组公式做:

Res!b2 = {sum(if((Res!A2 = Ref2!A2:A6) * (Res!A2 = Ref1!A2:A4) * (Ref2!B2:D6 = Ref1!B1:D1), Ref!B2:E4))} 

但是它不工作,我相信这是因为第三个条件试图比较向量与另一个矢量而不是单个值。

有没有人有任何想法我可以做到这一点?很高兴使用数组,索引,匹配,向量,查找但不是VBA。

感谢

回答

2

假设在结果几个月表头是在相同的顺序参考表2(按照您的例子),然后尝试在RES!B2

=SUM(SUMIF(Ref1!$B$1:$E$1,IF(Ref2!$A$2:$A$6=Res!$A2,Ref2!B$2:B$6),INDEX(Ref1!$B$2:$E$4,MATCH(Res!$A2,Ref1!$A$2:$A$4,0),0)))

确认有该公式CTRL+SHIFT+ENTER抄下和整个

这给了我同样的结果,当您在搜索结果表中获取

如果月份可能按不​​同的顺序,那么您可以添加一些内容来检查 - 我认为结果表格行标签中的类型可能与参考表格1的顺序不同,但如果它们总是以相同的顺序(根据您的示例),那么最后的INDEX/MATCH部分可以简化为单个范围

+0

+1,比我正在处理的要干净得多。 – RocketDonkey

+0

@Barry,非常感谢。我很确定我永远不会想出这个。我非常感谢你的帮助。这些月份将始终按照相同的顺序排列,但是我会保持INDEX/MATCH的稳健性。再次感谢。 –