如何根据表格(Excel)中的标准计算小时数

如何根据表格(Excel)中的标准计算小时数,excel,excel-formula,skkakker,chthonicdaemon,Excel,Excel Formula,Skkakker,Chthonicdaemon,我必须在“表格”中脱颖而出 A2:C6显示项目列表。每个项目属于一个或多个类别 E2:F4显示每个项目花费的时间 我正在寻找一种方法来计算每个类别花费的时间。答案是显而易见的(40小时和50小时),但我不知道如何构造一个工作公式,它将提供答案 H I 1 Category Sum Hours 2 C1 40 3 C2 50 有什么想法吗?SUMPRODUCT()似乎是这个案例的好选择。如果允许稍微修改

我必须在“表格”中脱颖而出

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

我正在寻找一种方法来计算每个类别花费的时间。答案是显而易见的(40小时和50小时),但我不知道如何构造一个工作公式,它将提供答案

      H           I
1  Category   Sum Hours
2     C1          40
3     C2          50  
有什么想法吗?

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

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

我将
索引、匹配
SUMPRODUCT
相结合来处理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)
对于这种情况,SUMPRODUCT()似乎是一个不错的选择。如果允许稍微修改结果列,则公式将变得更容易。 在H2中输入此公式,然后复制到I2

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

我将
索引、匹配
SUMPRODUCT
相结合来处理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)

这是
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
是复制过来的公式。这将适用于您选择的任何标签。
D3
中的
VLOOKUP
公式是
=VLOOKUP(A3;$E$2:$F$4;2;FALSE)
。请注意,这将为D6设置一个
#NA
,因为P4没有小时数。只要解决这个问题,您就有了一个相对通用的解决方案。

这是
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
是复制过来的公式。这将适用于您选择的任何标签。
D3
中的
VLOOKUP
公式是
=VLOOKUP(A3;$E$2:$F$4;2;FALSE)
。请注意,这将为D6设置一个
#NA
,因为P4没有小时数。只要解决了这个问题,你就有了一个相对通用的解决方案。

基于来自的非常有启发性的答案,我提出了这个解决方案,它很有效。谢谢


=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)

基于来自的非常鼓舞人心的答案,我想出了这个解决方案,它很有效。谢谢


=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)

谢谢您的回答。如果A3-A5中的P1-P3与E2-E4中的P1-P3列在同一顺序,则该方法有效。情况并非总是如此。所以我需要一个解决方案,其中列a og E中的Pnumbers是公式的一部分。这就是它成为一个难题的原因:-)我认为通过将Pnumbers包装在COUNTIFS函数中,可以将Pnumbers包含在公式中。主要方法是将COUNTIFS应用在$A$3:$A$6的范围内,在OR条件下从$E$2:$E$4开始采用标准。我正在试图弄清楚语法。但对我来说,这似乎是正确的方法。请查看包含Pnumbers标准的修订公式。我刚刚编辑了我的答案。@skkakkar您编辑的公式中的单元格引用需要更新。看起来你的D3:D6应该是B3:B6。D2应该是B2,J1应该是H1@TorstenBachSchrøder水平调整公式是否适合您,或者您是否需要一个向下复制的公式?谢谢您的回答。如果A3-A5中的P1-P3与E2-E4中的P1-P3列在同一顺序,则该方法有效。情况并非总是如此。所以我需要一个解决方案,其中列a og E中的Pnumbers是公式的一部分。这就是它成为一个难题的原因:-)我认为通过将Pnumbers包装在COUNTIFS函数中,可以将Pnumbers包含在公式中。主要方法是将COUNTIFS应用在$A$3:$A$6的范围内,在OR条件下从$E$2:$E$4开始采用标准。我正在试图弄清楚语法。但对我来说,这似乎是正确的方法。请查看包含Pnumbers标准的修订公式。我刚刚编辑了我的答案。@skkakkar您编辑的公式中的单元格引用需要更新。看起来你的D3:D6应该是B3:B6。D2应该是B2,J1应该是H1@TorstenBachSchrøder水平调整公式对你有用吗?还是你需要一个复制下来的公式?我应该更具体一点。我不能确定类别“C1”是否会列在B列中,或者类别“C2”是否会列在C列中。类别“C1”可能会列在B、C或D列中的任何一列中。这使得一切都有点棘手……我建议在第1行(类别标签正上方)进行总时数计算。这样,类别标签可以是任何东西,
SUMIF
仍然可以工作。另外,我在对另一个答案的评论中看到您提到,
E2:F5
中的项目时间列表并不总是按相同的顺序排列。只要它们是唯一的,您就可以使用
VLOOKUP
来匹配它们。我应该更具体一点。我不能肯定,那