如果某个单元格为空白,并且同一行中某个单元格的文本等于某个值,则对另一个单元格求和

如果某个单元格为空白,并且同一行中某个单元格的文本等于某个值,则对另一个单元格求和

我有一个电子表格,但我不明白它是如何工作的,这可能是因为我使用了范围。我的电子表格如下所示:

[      A     ] [  B  ] [    C    ] [      D      ]
[Product name] [Price] [Bought by] [Has been paid]
[  PRODUCT 1 ] [ 100 ] [  Peter  ] [             ]
[  PRODUCT 2 ] [ 100 ] [  Peter  ] [      X      ]
[  PRODUCT 3 ] [ 100 ] [  Jane   ] [      X      ]
[  PRODUCT 4 ] [ 100 ] [  Jane   ] [      X      ]
[  PRODUCT 5 ] [ 100 ] [  Peter  ] [             ]

如果 D 为空白且 C 等于文本字符串,则将 B 添加到总和中并将其输出到单元格中。

以下是我所拥有的:

=SUM(IF(AND(ISBLANK(D2:D999), (C2:C999 = "Peter")), B2:B999, 0))

我认为这样做的目的是:

if cell D2 is blank AND cell C2 equals Peter, add B2 to the sum, otherwise add 0
repeat for all rows

因此,在上面的例子中,由于 Peter 尚未收到产品 1 或产品 5 的付款(标记为 X),因此应该将价格列中的 2 个价格相加,从而返回 200。

我感觉我已经很接近了,但我真的不确定。我在这里写了一个更好的例子,也许这能有所帮助:

sum = 0

foreach( row in rows )
    if( row.D = "" AND row.C = "Peter" )
        sum += row.Price

//insert(row, col, sum)

我需要两个这样的函数。一个用于 Jane,一个用于 Peter。这就是我添加条件来检查同一列的单元格是否等于“Peter”的原因。

答案1

使用 SUMPRODUCT:

=SUMPRODUCT((LEN($D$2:$D$999)=0)*($C$2:$C$999 = E2)*$B$2:$B$999)

在此处输入图片描述

答案2

您可以使用 SUMIFS 来实现这一点:

=SUMIFS($B$3:$B$7,$C$3:$C$7,"<>""",$D$3:$D$7,"")

在此处输入图片描述

相关内容