具有特定列日期范围的 SUMIF

SUMIF with date range for specific column

我一直在尝试为此寻找答案,但没有成功 - 我需要对指定日期范围内的列求和,只要我的行名与引用 sheet 相匹配列名。

Reference_Sheet

Date     John  Matt
07/01/19 1     2
07/02/19 1     2
07/03/19 2     1
07/04/19 1     1
07/05/19 3     3
07/06/19 1     2
07/07/19 1     1
07/08/19 5     9
07/09/19 9     2

工作表 1

     A     B     

  1        07/01
  2        07/07
  3        Week1 
  4  John  10
  5  Matt  12

必须在 google sheet 秒内工作,我尝试使用 SUMPRODUCT 这告诉我我不能乘法文本,我尝试了 SUMIFS 这让我知道我不能有不同的数组参数 - 失败的努力类似于下面,

=SUMIFS('Reference_Sheet'!B2:AO1000,'Reference_Sheet'!A1:AO1,"=A4",'Reference_Sheet'!A2:A1000,">=B1",'Reference_Sheet'!A2:A1000,"<=B2")

=SUMPRODUCT(('Reference_Sheet'!$A:$AO00)*('Reference_Sheet'!$A:$A00>=B)*('Reference_Sheet'!$A:$A00<=B)*('Reference_Sheet'!$A:$AO=$A4))

这可能有效:

=sumifs(indirect("Reference_Sheet!"&address(2,match(A4,Reference_Sheet!A:AO,0))&":"&address(100,match(A4,Reference_Sheet!A:AO,0))),Reference_Sheet!A:A0,">="&B,Reference_Sheet!A:A0,"<="&B)

但是您需要指定需要它向下移动多少行。在我的公式中,它向下看直到 100 行。

要更改行数,您需要更改三个地方的数字:

  1. &地址(100
  2. Reference_Sheet!A$2:A$100," ...两处

简单解释一下是怎么回事:

  • 使用 match
  • 在第 1 行中查找此人的姓名
  • 使用addressindirect构建要添加的单元格地址
  • 然后 sumIfs() 基于日期。

选择:

=SUMPRODUCT(QUERY(TRANSPOSE(QUERY($A:$D, 
 "where A >= date '"&TEXT(F, "yyyy-mm-dd")&"'
    and A <= date '"&TEXT(F, "yyyy-mm-dd")&"'", 1)), 
 "where Col1 = '"&$E4&"'", 0))