这是一个很难的问题!
我正在处理的工作表:https://docs.google.com/spreadsheets/d/1fIBFq4q179k6-5YuhoFZ-3X84tMMkLmIUeV9-KpjN9I/edit?usp=sharing
在“Report”选项卡上,在单元格C22和D22中,我正在尝试计算如何将11月和10月支付的金额相加。所有选项卡(并在添加选项卡时包括将来的选项卡)。
您可以在各个股票编号页面上看到(例如“PT-1010!”K14:K)该月的付款已按总额细分。我如何在所有页面上搜索,找出它是否写着‘11月20日’,并将它们加起来--然后吐出一个数字?
我的脑痛,哈哈--任何帮助都非常感谢!!
发布于 2020-12-04 11:24:18
这可能会有所帮助。(See my sample sheet here)
这将使用来自Customers页面的库存编号列表的间接寻址,获取日期小于现在的所有付款的数组。我使用以下公式将此列表拉入一个位置(在我的测试中为U2):
=query(Customers!A5:A,"where A<>'' order by A",0)
所以这始终是一个当前/动态列表。
然后,主公式使用间接寻址从该列表中提取选项卡名,并收集所有数据。我添加了过滤器来减少收集的行数,因为您有很多未来的日期。
然后,我使用一个查询,通过间接寻址到报告中的日期单元格,按所需的月份进行筛选。这使得两个C22 (11月)都可以使用完全相同的公式。和D22 (10月)。
计算每月支付总额的主要公式是:
=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列,对吗?)并且可以对结果进行验证。
https://stackoverflow.com/questions/65134292
复制相似问题