![Excel - 计算表中可变行数的平均值的公式?](https://linux22.com/image/1420860/Excel%20-%20%E8%AE%A1%E7%AE%97%E8%A1%A8%E4%B8%AD%E5%8F%AF%E5%8F%98%E8%A1%8C%E6%95%B0%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC%E7%9A%84%E5%85%AC%E5%BC%8F%EF%BC%9F.png)
我有一张表格,其中 B 列中的值是 A 列中一些先前值的平均值。
我想使用命名范围“DaysToCount”来改变用于平均值的行数。我尝试使用 ADDRESS 和 CONCATENATE 来构建 AVERAGE 函数,如下所示:
AVERAGE(CONCATENATE(ADDRESS(ROW()-DaysToCount+1,2),":B",ROW())))
它给出了 #VALUE 错误。使用评估公式工具,我可以看到它的计算结果如下:
AVERAGE("B3:B12")
我想要的是这个:
AVERAGE(B3:B12)
有没有办法解决这个问题——或者我应该尝试另一种方法?
答案1
使用公式在函数内构建单元格引用的方法是使用INDIRECT
。我能够使用以下公式实现我的目标:
AVERAGE(INDIRECT("B" & ROW()-DaysToCount+1 & ":B"&ROW()))
答案2
快捷方式如下。假设此公式位于 B7 中:
=AVERAGE(OFFSET(B7,(-1 * (DaysToCount-1)),-1,DaysToCount))
我并不总是喜欢这样,因为那里有明确的单元格引用。但要摆脱它需要更多努力。你可以用以下技术之一来代替它这里。