Excel – SUMIF INDEX和MATCH

我坚持一个sumif公式。 我认为如果我使用了一些索引和匹配的组合,我可以把它工作,但在过去的一个小时里我一直无法做到。

我需要从一个数字表中总结出房屋号码和2个date。 例如,我需要在08-05-17和13-05-17date之间总结房屋1的数字。

我以前的索引和匹配经验是,我只用它来获得一个特定的数字。

我试图总结一下

哪里应该去哪里

OFFSET和INDIRECT是不稳定的,这可以用INDEX / MATCH来实现

=SUMIFS(INDEX(Sheet1!$W:$AC,MATCH("House " & B4,Sheet1!$A:$A,0),0),Sheet1!$W$3:$AC$3,"<=" & $AE4,Sheet1!$W$3:$AC$3,">=" & $AD4) 

作为INDEX中的第三个标准的0将返回由MATCHselect的行中的所有列。

这个公式是非易失性的,非数组。

修改以下内容

 =SUMIFS(OFFSET(B3:ZZ3,MATCH("house 1",E:E,0)-3,0),B3:ZZ3,">"&42863,B3:ZZ3,"<"&42868) 

将“house 1”更改为参考。

将42863和42868分别更改为开始date和结束date的引用。 (数字只是数字格式的date。)

将范围和匹配公式中的3s更改为包含date的行号。

将B3:ZZ3更改为您date的行的范围。 假设你正在连续地更新数据,你可以通过增加范围来提供空间,如我的例子中的ZZ列。

假如说:

  • 第一个表在Sheet1上
  • 第一个表中的房屋1数据在第4行
  • 第二张桌子是分开的
  • 第二表中的房屋1数据在第四行

Sheet2中的这个公式,单元格AG4应该工作:

 SUM(INDIRECT("Sheet1!R4C"&22+MATCH(AD4,Sheet1!W3:AC3,0),FALSE):INDIRECT("Sheet1!R4C"&22+MATCH(AE4,Sheet1!W3:AC3,0),FALSE)) 

使用数组操作的AI4公式(通常公式,不是CSE):

 =SUMPRODUCT(Sheet1!W4:XX100* (Sheet1!A4:A100 = "House " & A4)* (Sheet1!W3:XX3 >= AD4)* (Sheet1!W3:XX3 <= AE4)) 

ps Index/Match版本应该(据说)更快,但我喜欢这种forms的可读性…