尝试通过在另一列中查找正确的行来计算一列的值

Trying to calculate a value from one column by looking for the correct row in a different column

我不是程序员,不会写代码保命!

但是,我有一个 Excel table 可以计算多个资源的分配时间。目前,我编写的公式无法直接找到相关行,因此如果 "Availability" 行在 "Capacity" 行上方 而不是 ,则该公式不起作用正如我所愿。

我目前使用的公式是:

=IF(A8=A9, IF( B8 = "Availability", IF(D8=D9,0, IF(D8<0, -D8+D9, D9-D8)), ""), "")

我希望公式查找资源名称并计算每个月在 "Availability" 行和 "Capacity" 行之间分配的小时数。此公式需要为每个资源名称执行此操作,而不是重复结果,因此每个资源名称都有一个值。

感谢您花时间阅读本文,即使您无法提供帮助。

试试这个:

=IF(B2 = "Availability",INDEX(D:D,MATCH(A2 & "Capacity",A:A&B:B,0))-D2,"")

问题是容量并不总是直接在可用性之下。这是一个数组公式,必须通过 Ctrl-Shift-Enter 确认。把它放在 H2 的公式框中。按 Ctrl-Shift-Enter。然后抄下来。

一个注意事项:如果不是整个列引用,它会加快速度; D:D,B:B和A:A,你放的是数据的实际绝对范围; $D$2:$D$300...

SUMPRODUCT 公式非常适用于此。我通常会命名范围,但出于这个目的,我包含了前 1000 行。这将为您提供第 1 个月的总小时数,其中资源名称 = 名称 1,类别是可用性,无论顺序或每个出现的次数如何...

=SUMPRODUCT(($A:$A00="Name 1")*($B:$B00="Availability")*($D:$D00))

您可以对容量执行相同的操作,或者如果您需要不同...

=SUMPRODUCT(($A:$A00="Name 1")*($B:$B00="Availability")*($D:$D00))-  
SUMPRODUCT(($A:$A00="Name 1")*($B:$B00="Capacity")*($D:$D00))