我有一个表,我正在尝试根据两个参考表的值进行填充。
我有各种不同的项目'Type 1','Type 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月开始有2个新的,一个是Type 1
,另一个是Type 2
。在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
我想创建一个表来计算每个项目类型每个月花费的总成本。示例结果显示在下面的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。
由于
答案 0 :(得分:2)
假设结果表标题中的月份与Ref表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
确认并向下复制
这给了我与结果表中相同的结果
如果月份可能是不同的顺序,那么你可以添加一些东西来检查它 - 我假设结果表行标签中的类型可能与Ref表1的顺序不同,但如果它们总是在同一个也可以订购(根据您的示例),然后最后的INDEX/MATCH
部分可以简化为单个范围