Dan*_*röm 2 excel vba worksheet-function array-formulas
我想计算一个列的最后20个数字的移动平均值.问题是列的某些单元格可能是空的,应该忽略它们.例:
A
175
154
188
145
155
167
201
Run Code Online (Sandbox Code Playgroud)
最后三个的移动平均值为(155 + 167 + 201)/ 3.我试图用平均值,偏移量,索引实现这个,但我根本不知道如何.我对宏有点熟悉,所以这样的解决方案可以正常工作:=MovingAverage(A1;3)
感谢您的任何提示或解决方案!
{=SUM(($A$1:A9)*(ROW($A$1:A9)>LARGE((ROW($A$1:A9))*(NOT(ISBLANK($A$1:A9))),3+1)))/3}
Run Code Online (Sandbox Code Playgroud)
使用control + shift + enter输入,使其成为数组公式.这将找到最新的三个值.如果您想要更多或更少,请将公式中的两个"3"实例更改为您想要的任何内容.
LARGE((ROW($A$1:A9))*(NOT(ISBLANK($A$1:A9))),3+1)
Run Code Online (Sandbox Code Playgroud)
此部分返回具有值的所有单元格的第4个最高行数,或者示例中为5,因为行6,8和9是具有值的第1到第3个最高行.
(ROW($A$1:A9)>LARGE((ROW($A$1:A9))*(NOT(ISBLANK($A$1:A9))),3+1))
Run Code Online (Sandbox Code Playgroud)
该部分基于行号是否大于第4个,返回9个TRUE或FALSE.
($A$1:A9)*(ROW($A$1:A9)>LARGE((ROW($A$1:A9))*(NOT(ISBLANK($A$1:A9))),3+1))
Run Code Online (Sandbox Code Playgroud)
这将A1:A9中的值乘以9 TRUE或FALSE.TRUEs转换为1,FALSEs转换为零.这留下了这样的SUM函数
=SUM({0;0;0;0;0;155;0;167;201})/3
Run Code Online (Sandbox Code Playgroud)
因为155以上的所有值都不满足行号标准,所以get乘以零.
| 归档时间: |
|
| 查看次数: |
8649 次 |
| 最近记录: |