首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对Google Sheets中多个页面的唯一查询求和

对Google Sheets中多个页面的唯一查询求和
EN

Stack Overflow用户
提问于 2020-12-04 05:18:16
回答 1查看 195关注 0票数 0

这是一个很难的问题!

我正在处理的工作表:https://docs.google.com/spreadsheets/d/1fIBFq4q179k6-5YuhoFZ-3X84tMMkLmIUeV9-KpjN9I/edit?usp=sharing

在“Report”选项卡上,在单元格C22和D22中,我正在尝试计算如何将11月和10月支付的金额相加。所有选项卡(并在添加选项卡时包括将来的选项卡)。

您可以在各个股票编号页面上看到(例如“PT-1010!”K14:K)该月的付款已按总额细分。我如何在所有页面上搜索,找出它是否写着‘11月20日’,并将它们加起来--然后吐出一个数字?

我的脑痛,哈哈--任何帮助都非常感谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 11:24:18

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

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

代码语言:javascript
运行
复制
=query(Customers!A5:A,"where A<>'' order by A",0)

所以这始终是一个当前/动态列表。

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

然后,我使用一个查询,通过间接寻址到报告中的日期单元格,按所需的月份进行筛选。这使得两个C22 (11月)都可以使用完全相同的公式。和D22 (10月)。

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

代码语言:javascript
运行
复制
=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)

仅仅使用公式,而不是脚本,我想不出其他方法来在多个选项卡之间循环。您可以重复公式中的筛选器行,以根据需要处理任意数量的客户。如果您要使用更多,那么您可能需要转到脚本。如果现在扩展公式,您可能需要虚拟选项卡来处理未来的客户。

而且,我认为可能需要一些错误检查,以处理间接寻址到tabs中可能出现的错误。这可能是一个测试,以确保我们不会从股票编号列表中拉出一个空值,这等同于标签名称。或者,IFERROR可以涵盖这些内容,每个过滤器语句一个。

如果这有帮助,请告诉我。

如果您删除最后一行中的日期条件,并将"sum( Col4 )“更改为"Col1,Col4 order by Col1",您将获得所有数据记录和付款(每个选项卡中的E列,对吗?)并且可以对结果进行验证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65134292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档