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行中,您可以find2015
至2020
, 第2 行中可以find相应的每年收入。
在C3单元格中 ,用户应该input返回的年数并总结收入。
例如,如果用户input一个2
Excel,则返回2
年,在上述情况下总结2017
和2016
的收入为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范围内的位置。
匹配查找给定范围内的值。