无法将SUMIFS转换为SUMPRODUCT

我正在尝试将SUMIFS公式重写为SUMPRODUCT以便它可以引用已closures的工作表。 如果date介于两个值之间,则公式会检查一个包含date的列,如果是这样,则会计算另一列的总和。 SUMIFS公式是

  =SUMIFS('WorkbookName'!$D:$D,'WorkbookName'!$A:$A ">=7/1/2015",'WorkbookName'!$A:$A"<=9/30/2015") 

只要这两个工作簿都是开放的,但是我不能让我的SUMPRODUCT产生除"-"之外的任何东西。这就是我所尝试过的(其中A17A18是上面的两个date)

 =SUMPRODUCT(--('Workbook'!$A:$A>=A17),('Workbook'!$A:$A<=A18) ('Workbook'!$C:$C)) 

看起来你的语法不太正确(无论是或编辑器损坏你的公式):

=SUMPRODUCT(--(Workbook!$A1:$A1000>=A17),--(Workbook!$A1:$A1000<=A18),Workbook!$C1:$C1000)

我强烈build议您不要将整个列引用与SUMPRODUCT结合使用。 因此,我使用1000作为上排参考。

随意修改这个值来满足你的要求,但是你应该小心,不要太大,因为对于每个引用的单元格,都需要额外的计算。

无论那些额外的细胞是否在技术上超出了这些范围内最后使用的细胞,这都适用。 使用一些函数,例如COUNTIF(S)/ SUMIF(S),可以避免引用整个列,而不会影响性能,但不能使用对数组进行操作的函数,如AGGREGATE,SUMPRODUCT和任何需要CSE的构造。

更好的是,使范围dynamic化,以便随着数据展开/收缩自动调整,从而提供最佳的计算效率。 如果你喜欢,我可以告诉你如何做到这一点。

问候

尝试,

 =SUMPRODUCT(--('Workbook'!$A:$A>=A17), --('Workbook'!$A:$A<=A18), ('Workbook'!$C:$C)) 

两个工作簿打开公式创build公式。 之后,您可以closures外部工作簿,引用应调整为完整path和工作簿的名称。

我不完全清楚为什么要从更高效的SUMIFSfunction切换到旧的SUMPRODUCTfunction,除非您试图提供大约xl2003版本的兼容性。

如果上面的代码是正确的,则有两个错误。 正确的语法将是

 =SUMPRODUCT(--('Workbook'!$A:$A>=A17), --('Workbook'!$A:$A<=A18), ('Workbook'!$C:$C)) 

第二部分需要 – 以及第二个逗号失踪。 我在这里试了一下,这些改变没有任何问题。