SUMIF跨多张床单

时间:2017-12-13 18:31:35

标签: google-sheets

我有一张Google工作表文档,其中多张工作表具有相同的列布局。如果列G =" cat",我想要对列J求和。

基本上,这个:

=SUMIF('A'!G3:G,"=cat", 'A'!J3:J) + SUMIF('B'!G3:G,"=cat", 'B'!J3:J) + SUMIF('C'!G3:G,"=cat", 'C'!J3:J)

但是,有很多床单,这很麻烦。我怎样才能将其减少到这样的程度:

=SUMIF(INDIRECT({A,B,C}&"!G3:G"), "=cat", INDIRECT({A,B,C}&"!J3:J"))

1 个答案:

答案 0 :(得分:1)

INDIRECT数组公式的解决方案,请参见here

不幸的是INDIRECT doesn't support

中的数组进行了迭代

无法使用语法{A,B,C}&"!G3:G

解决方法

第一步是将公式简化为:

=SUM(FILTER({Sheet1!B:B;Sheet2!B:B},{Sheet1!A:A;Sheet2!A:A} = "Cat"))

困难的部分是手动键入带范围的所有工作表名称。我建议列出一个名为Sheets_List的工作表名称列表:

Sheet1
Sheet2

然后使用join生成正确的公式文本:

="{'"&JOIN("'!B:B;'",Sheets_List)&"'!B:B}"

结果是文本"{'Sheet1'!B:B;'Sheet2'!B:B}",用它来构建公式。