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的可读性…