3

我有一个表,我试图根据两个参考表的值来填充。

我有各种不同的项目“类型 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 月份开始有 2 个新的,一个是 a Type 1,另一个是 a Type 2。2 月,我将有 4 个项目,前两个项目进入第二个月,两个新项目开始,但这次是 Type 1 和 Type 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。

谢谢

4

1 回答 1

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可以将末尾的部分简化为单个范围

于 2012-12-18T10:49:25.010 回答