dynamic的OFFSET和SUM公式的起点

我有以下Excel电子表格:

ABCDEFG 1 Year 2015 2016 2017 2018 2019 2020 2 Revenue 5.000 4.000 6.000 3 Years to go back: 2 4 Sum of Periods: 10.000 

第1行中,您可以find20152020第2 行中可以find相应的每年收入。

C3单元格中 ,用户应该input返回的年数并总结收入。
例如,如果用户input一个2 Excel,则返回2年,在上述情况下总结20172016的收入为10.000 。 为此,我使用了以下公式:

 =SUM(OFFSET($E$2,0,-C3):$E$2) 

上面这个公式和上面描述的计算完美地工作到目前为止

不过,在2018我将不得不将上述公式中Cell $ E $ 2的起点调整为Cell $ F $ 2 。 计算中不包括2018

 =SUM(OFFSET($F$2,0,-C3):$F$2) 

我现在的问题是,我怎样才能避免这种永久性的重新调整?

– >我认为解决scheme应该是一个公式,确定一个内的第一个“非空”单元格 ,然后开始从这个单元格计算回来的年份。 不知何故,SUM,OFFSET,ROW&COLUMN公式的组合。

你可以使用这个公式:

 =SUM(INDIRECT("R2C" & (MATCH(YEAR(TODAY()),$1:$1,0) - $C$3 + 1) & ":R2C" & MATCH(YEAR(TODAY()),$1:$1,0), FALSE)) 

但请注意,我假设current year - $C$3在您的数据范围内。

简要说明:

 YEAR(TODAY()) - it will return the year of current date, then you don't need to re-adjust every year MATCH(lookup_value, lookup_array, match_type) - it will find the value matched in first row, and return the index of cell INDIRECT() - Form the result of match to a R1C1 notation, and convert the text to excel range 

一个简单的公式可能是使用OFFSET的第四个参数来设置宽度,并使用YEAR(TODAY()0-2016计算OFFSET YEAR(TODAY()0-2016

 =SUM(OFFSET($B$2,0,YEAR(TODAY())-$C$1,1,$B$3)) 

非易失性选项

如果它不是TODAY()函数,那么它是非易失性的。 将TODAY()replace为包含开始年份的单元格作为date。 或者用包含year(整数)的单元格引用replaceYear(Today()),然后它将是一个非易失性选项。

 =SUM(INDEX($1:$1,MATCH(YEAR(TODAY()),$1:$1,0)):INDEX($1:$1,MATCH(YEAR(TODAY()),$1:$1,0)-($C$3-1)) 

每当电子表格中的内容发生变化时,都会重新计算易失性函数。 非易失性函数只有在影响它们的变化时才会重新计算。

索引函数返回其查找范围内的单元格地址。 对于2D范围,您需要给出行和列参考。 对于一维范围,你只需要find范围内的位置。

匹配查找给定范围内的值。