Sumifs如何对动态区域求和。表样如图1

最初的需求是对最近的数据按机构求个汇总,因为不知如何动态匹配区域,所以将最新的数据固定放在I列,公式就是Sumifs的普通应用。但是:随着数据的增加,发现公式里的求和区域还是会变化(加了锁定单元格的$,也是不起作用的)。插入新数据后,原本公式的求和区域H列,会变为I列,这样公式每次都要再改回H列。这就很不方便了,有没有什么函数固定返回一个区域呢?

Offset函数返回的区域就不受此影响。Offset(基准点,偏移行,偏移列,返回行高,返回列宽);前三参数为必写,后2可省略,省略就只返回1个单元格。公式写法:SUMIFS(OFFSET($F$1,1,2,20,1),$F$2:$F$21,N2)(图2格式) 释义:求和区域为OFFSET($F$1,1,2,20,1),以F1为基准,偏移1行(就是以第2行为开始行),偏移2列(就是H列了),基准点偏移后的指向位置就是H2,返回行高20,列宽为1,就是H2:H21区域了。再往H列插入新数据,公式的值会自动更新,而不是像之前一样,H列变为I列,公式算的是I列数据。(图3是增加1列后,公式的数据自动更新效果)

注:基准点选的单元格不能处于变动列的后面,就是H列与后面的列,会随着H列的插入新数据自动向后移,如果基准点选在H列之后,插入也会发生变动,就固定不住区域了。

如果数据是按日期往后增加,可否返回与日期动态变化的数据区域?

在Offset中加入Match函数来匹配日期,用Match返回值取代偏移列即可。公式:SUMIFS(OFFSET($F$1,1,MATCH(TODAY()-1,$G$1:$L$1,0),20,1),$F$2:$F$21,N2)。释义:TODAY()-1是指前一天,在$G$1:$L$1这个区域查找前一天的日期,找到后,返回1个数字,为在区域$G$1:$L$1中的位序数,图4中情况返回的是6(见图5)。偏移的列会随日期变化而变化,SUMIFS求和的区域也会随日期变化,从而实现Sumifs对动态区域求和。