跨多个选项卡总和,只有标记为“活动”标签

Sum Across Multiple Tabs, Only If Tab is Flagged as being Active

我有 5 个标签:“开始”“2020”“2019”“2018”“结束” 我想对所有选项卡中的同一个单元格(例如单元格 A2)求和,仅当该选项卡被标记为活动时(例如,每个选项卡的单元格 A1 将具有 1 或 0,具体取决于它是否处于活动状态)。

通常,我会这样做:=sum('Start:End'!A2),但是我只想对处于活动状态的选项卡的单元格求和。然后我希望能够将此公式拖过,以便所有选项卡的 A2、B2 等如果它们是活动选项卡的一部分,则可以汇总。

我还需要它具有灵活性,这样如果我在“结束”选项卡之前添加一个新选项卡,我就可以轻松地将其合并到求和公式中。

我相信这可以通过 Sumproduct 和 Sumifs 的组合来实现,但是我还不能确定公式。我试过了

=SUMPRODUCT(SUMIFS('Start:End'A2,'Start:End'$A,"=1"))

然而 returns #VALUE!错误。

假设:

  • 所有单元格 A1 为空(因此为零) 文字 0 1;
  • 访问 ms365 的 TOCOL()

尝试:

=SUM(TOCOL(Start:End!A1)*TOCOL(Start:End!A2))

由于条目数不太可能超过 TEXTJOINFILTERXML 的字符限制,因此 non-volatile 选项似乎更可取。更重要的是,这还允许所需的 3D sheet 引用。

=SUM(FILTERXML("<a><b>"&TEXTJOIN("</b><b>",,Start:End!A1:A2)&"</b></a>","//b[preceding::*[1]=1 and position() mod 2 = 0]"))

我假设单元格 A2 中的所有条目在所有 sheet 中都是 non-empty。如果不是这样,修改为:

=SUM(FILTERXML("<a><b>"&TEXTJOIN("</b><b>0",0,Start:End!A1:A2)&"</b></a>","//b[preceding::*[1]=1 and position() mod 2 = 0]"))