Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 根据多个标准加速筛选和汇总结果?_Google Sheets - Fatal编程技术网

Google sheets 根据多个标准加速筛选和汇总结果?

Google sheets 根据多个标准加速筛选和汇总结果?,google-sheets,Google Sheets,我正在筛选,然后根据日期范围和列是否包含多个可能值之一对事务数据求和 示例数据 A | B | C | D -----------|-----|---------------------------------------------------|------- 11/12/2017 | POS | 6443 09DEC17 C , ALDI 84 773 , OFFERTO

我正在筛选,然后根据日期范围和列是否包含多个可能值之一对事务数据求和

示例数据

    A      |  B  |                C                                  |   D
-----------|-----|---------------------------------------------------|-------
11/12/2017 | POS | 6443 09DEC17 C , ALDI 84 773 , OFFERTON GB        | -3.87
18/12/2017 | POS | 6443 16DEC17 C , CO-OP GROUP 108144, STOCKPORT GB | -6.24
02/01/2018 | POS | 6443 01JAN18 , AXA INSURANCE , 0330 024 1229 GB   | -220.10
我现在有下面的公式,虽然有效,但速度非常慢

=sum(
  iferror(
     filter(
         Transactions!$D:$D, 
         Transactions!$A:$A>=date(A2,B2,1),
         Transactions!$A:$A<=date(A2,B2,31),
         regexmatch(Transactions!$C:$C, "ALDI|LIDL|CO-OP GROUP 108144|SPAR|SAINSBURYS S|SAINSBURY'S S|TESCO STORES|MORRISON|MARKS AND SPENCER , HAZEL GROVE|HAZELDINES|ASDA")
     )
     ,0
  )
) * -1
=sum(
伊弗罗(
滤器(
交易!$D:$D,
交易记录!$A:$A>=日期(A2,B2,1),
交易!$A:$A
结果是这样一个表:

year()  sum(month()1())    sum 
2017                 11    3.87
2017                 12    6.24
如果需要,请添加标签。带标签的示例查询文本:

“按年份(Col1)、月份(Col1)+1、-1*总和(Col2)分组,按年份(Col1)、月份(Col1)+1标签年份(Col1)‘年’、月份(Col1)+1‘月’”

结果是:

Year   Month    sum 
2017      11    3.87
2017      12    6.24
解释

  • 单一公式报告减少了筛选函数的数量,因此必须更快地工作
  • 使用了查询语法

这个奇妙的方法在生成输出方面做了很多工作……还有一个问题,是否可以在不输出任何内容时包含结果为0的空月行?要包含空月,需要将它们添加到数据中。创建“虚拟”月:
=query({date(2018,1,1),0};{date(2018,2,1),0};…过滤器(…)},sql文本,0)
year()  sum(month()1())    sum 
2017                 11    3.87
2017                 12    6.24
Year   Month    sum 
2017      11    3.87
2017      12    6.24