如何根据表格中的条件汇总小时数(Excel)

时间:2016-05-28 11:18:37

标签: excel excel-formula

必须"表"我Excel

     A        B      C      D        E       F
1          Category               Project  Hours
2  Project    C1     C2             P1       10
3    P1        x                    P2       20
4    P2               x             P3       30
5    P3        x      x
6    P4        x  

A2:C6显示项目列表。每个项目属于一个或多个类别 E2:F4显示每个项目花费的时间

我正在寻找一种方法来计算每个类别所花费的时间。答案是显而易见的(40h和50h),但我无法弄清楚如何构建一个可以提供答案的工作公式

      H           I
1  Category   Sum Hours
2     C1          40
3     C2          50  

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

SUMPRODUCT()似乎是这种情况的不错选择。如果您允许稍微修改结果列,则公式将变得更容易。 在H2中输入此公式,然后复制到I2。

   =SUMPRODUCT((B$2=H$1)*(B$3:B$6="x")*($F$2:$F$5))

Snapshot showing data and results

我已将INDEX, MATCHSUMPRODUCT合并以照顾Pnumbers。修改后的公式输入H2是:

=(SUMPRODUCT((B$2=H$1)*(B$3:B$6="x")*($F$2:$F$5)))*((INDEX($A$3:$A$6,MATCH($E2,$A$3:$A$6))=$E2)*1)

下一步是按IFERROR包含错误捕获。

修改 合并IFERROR公式是。

=IFERROR((SUMPRODUCT((B$2=H$1)*(B$3:B$6="x")*($F$2:$F$5)))*((INDEX($A$3:$A$6,MATCH($E2,$A$3:$A$6))=$E2)*1),0)

答案 1 :(得分:1)

这是SUMIF的简单应用。您可以在I2中输入=SUMIF(B3:B6;"x";$F2:$F5)并相应地修改其他类别。如果您将公式彼此相邻而不是彼此相邻,则可以将公式复制到。

我建议您按以下方式更改工作表:

    A        B        C        D          E       F
1           =SUMIF1 =SUMIF2            Project  Hours
2  Project    C1       C2    Hours        P1       10
3    P1        x             =VLOOKUP     P2       20
4    P2                 x    =VLOOKUP     P3       30
5    P3        x        x    =VLOOKUP
6    P4        x             =VLOOKUP

SUMIF1公式为=SUMIF(B3:B6;"x";$D3:$D6)SUMIF2是复制的公式。这适用于您选择的任何标签。 VLOOKUP中的D3公式为=VLOOKUP(A3;$E$2:$F$4;2;FALSE)。请注意,由于P4没有小时数,因此D6会有#NA。只需解决这个问题,你就可以找到一个相对普遍的解决方案。

答案 2 :(得分:0)

基于来自的非常灵感的答案,我提出了这个解决方案,即Works。谢谢!

=SUMPRODUCT(COUNTIFS($A$3:$A$6,$E$2:$E$4,INDEX($B$3:$C$6,0,MATCH($H2,$B$2:$C$2,0)),"x"),$F$2:$F$4)