对 Google 个工作表中多个页面的唯一查询求和

Sum a unique query on multiple pages in Google Sheets

这是一个艰难的过程!

Sheet 我正在研究:https://docs.google.com/spreadsheets/d/1fIBFq4q179k6-5YuhoFZ-3X84tMMkLmIUeV9-KpjN9I/edit?usp=sharing

在 'Report' 选项卡上,在单元格 C22 和 D22 中,我试图弄清楚如何合计在 11 月和 10 月支付的金额。跨所有选项卡(并包括未来添加的选项卡)。

您可以在个别股票编号页面(示例 'PT-1010!' K14:K)上看到付款已按当月总额细分。我如何搜索所有页面,看看它是否显示 'November-20' 并将它们全部计数 - 然后吐出一个数字?

我的脑袋很疼哈哈 - 非常感谢任何帮助!!

这可能会有所帮助。 (See my sample sheet here)

这会获取所有付款的数组,日期小于现在,使用来自“客户”页面的库存编号列表的间接寻址。我使用以下公式将此列表拉到一个位置(在我的测试中为 U2):

=query(Customers!A5:A,"where A<>'' order by A",0)

所以这始终是一个 current/dynamic 列表。

然后主公式使用间接寻址从该列表中提取选项卡名称,并收集所有数据。我添加了过滤器以减少收集的行数,因为您有很多未来的日期。

然后我使用查询按所需的月份进行过滤,对报表中的日期单元格使用间接寻址。这允许对 C22(十一月)和 D22(十月)使用完全相同的公式。

计算每个月支付总额的主要公式是:

=query({filter(indirect(U3 &"!B7:E"),indirect(U3 &"!B7:B")<Now());
  filter(indirect(U4 &"!B7:E"),indirect(U4 &"!B7:B")<Now());
  filter(indirect(U5 &"!B7:E"),indirect(U5 &"!B7:B")<Now());
  filter(indirect(U6 &"!B7:E"),indirect(U6 &"!B7:B")<Now());
  filter(indirect(U7 &"!B7:E"),indirect(U7 &"!B7:B")<Now());
  filter(indirect(U8 &"!B7:E"),indirect(U8 &"!B7:B")<Now());
  filter(indirect(U9 &"!B7:E"),indirect(U9 &"!B7:B")<Now());
  filter(indirect(U10 &"!B7:E"),indirect(U10 &"!B7:B")<Now());
  filter(indirect(U11 &"!B7:E"),indirect(U11 &"!B7:B")<Now());
  filter(indirect(U12 &"!B7:E"),indirect(U12 &"!B7:B")<Now());
  filter(indirect(U13 &"!B7:E"),indirect(U13 &"!B7:B")<Now());
  filter(indirect(U14 &"!B7:E"),indirect(U14 &"!B7:B")<Now());
  filter(indirect(U15 &"!B7:E"),indirect(U15 &"!B7:B")<Now());
  filter(indirect(U16 &"!B7:E"),indirect(U16 &"!B7:B")<Now());
  filter(indirect(U17 &"!B7:E"),indirect(U17 &"!B7:B")<Now());
  filter(indirect(U18 &"!B7:E"),indirect(U18 &"!B7:B")<Now());
  filter(indirect(U19 &"!B7:E"),indirect(U19 &"!B7:B")<Now())  },
  "select sum(Col4) where Col4 >0 and Col1 >= date '"& text(indirect(address(row()-3,column()  ,4,1)),"yyyy-mm-dd") &"' 
                                  and Col1 <  date '"& text(indirect(address(row()-3,column()-1,4,1)),"yyyy-mm-dd") &"' label sum(Col4) '' ",0)

仅使用公式而不是脚本,我想不出另一种循环显示多个选项卡的方法。您可以重复公式中的 FILTER 行来处理所需数量的客户。如果你要有更多,那么你可能需要去一个脚本。如果您现在扩展公式,您可能需要虚拟标签来处理未来的客户。

而且,我认为可能需要进行一些错误检查,以处理间接寻址选项卡时可能出现的错误。可能是一项测试,以确保我们不会从股票编号列表中提取空白值,该值等同于选项卡名称。或者一个 IFERROR 可以涵盖这些,每个 FILTER 语句一个。

如果有帮助请告诉我。

如果您删除最后几行中的日期条件,并将“sum(Col4)”更改为“Col1,Col4 按 Col1 排序”,您将获得所有包含付款的数据记录(每个选项卡中的 E 列,正确吗?)并可以验证结果。