我有以下Excel电子表格:
A B C D E F G
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行中,您可以找到年2015
直到2020
,在第2行中找到每年的相应收入。
在 Cell C3 中,用户应输入返回和总结收入的年数。
例如,如果用户输入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)
现在我的问题是如何避免每年进行这种永久性的重新调整?
- >我认为解决方案应该是一个公式,用于识别行中的第一个“非空”单元格,然后开始倒计数这个细胞。不知何故,SUM,OFFSET,ROW& COLUMN公式。
答案 0 :(得分:1)
您可以使用以下公式:
=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
答案 1 :(得分:0)
更简单的公式可能是使用OFFSET
的第4个参数设置宽度并使用OFFSET
YEAR(TODAY()0-2016
的起点
=SUM(OFFSET($B$2,0,YEAR(TODAY())-$C$1,1,$B$3))
答案 2 :(得分:0)
如果不是TODAY()函数,那么非易失性。将TODAY()替换为包含起始年份的单元格作为日期。或者用包含年份(整数)的单元格引用替换Year(Today()),然后它将是一个非易失性选项。
=SUM(INDEX($1:$1,MATCH(YEAR(TODAY()),$1:$1,0)):INDEX($1:$1,MATCH(YEAR(TODAY()),$1:$1,0)-($C$3-1))
每当电子表格上的某些内容发生变化时,易失性函数会重新计算。 非易失性函数仅在影响它们的内容发生变化时重新计算。
index函数返回其查找范围内的单元格地址。对于2D范围,您需要提供行和列引用。对于1D范围,您只需要找到该范围内的位置。
匹配在给定范围内找到一个值。