如果在列表中找不到类别,则Excel总计值(更好的编码方法)

我有一个数组的forms下面的代码,我想知道是否有一个更清洁,更dynamic的方式来编码。 (我已经删除了$,以方便阅读)

SUMPRODUCT(IF((A1:A10 <> D1)*(A1:A10 <> D2),B1:B10)) 
  • 列A有一个名称列表
  • B列有一个值列表
  • D列有一个不包含在计算中的名字列表

这个公式的问题在于,对于DI列中的每个新项目,都必须附加另一个*,这将开始形成一个庞大的公式。 我尝试了SUMPRODUCT(IF((A1:A10 <> D1:D2),B1:B10))但它没有工作。 有没有人有任何想法?

PS您必须按CTRL + SHIFT + ENTER使单元格数组,公式将无法正常工作。

编辑:我不能有D1:DX是与其他范围相同的大小,因为我需要X为我的具体情况dynamic

让我们使用一个帮助列来find“好”的行。 在C1中input:

 =IF(ISERROR(MATCH(A1,D:D,0)),1,0) 

并抄下来。 每个“好”的名字都标有1 。 在另一个小区:

 =SUMPRODUCT(--(C1:C100)*B1:B100) 

例如:

在这里输入图像说明

“帮助”列避免了数组公式的需要。 您可以在D列中拥有尽可能多的“坏”名称,而无需更改公式。

在'E1'中input这个公式:

 =SUMPRODUCT($B:$B,ISERROR(MATCH($A:$A,$D:$D,0))*1) 

在这里输入图像说明