![]() |
Moving Average of values within an array
What is the best way to calculate moving averages within VBA? I have an
array of values: MyArray(1 to 1000, 1 to 1) I would like to fill MyOtherArray(1 to 1000, 1 to 1) with 50-value moving averages of the values in MyArray. So for x=1 to 49, MyOtherArray(x,1) would be equal to #N/A, because there are not yet 50 values to average For x=50, MyOtherArray(50,1) would be equal to the average of the first 50 values of MyArray. If I were calculating moving averages in a worksheet, I would take the average of 50 cell ranges using the offset function. What would be a good way to do this within VBA? Thanks! |
Moving Average of values within an array
SumArray = 0
For i = 1 to 1000 SumArray = myArray(i,1) + SumArray if i< 50 then MyOtherArray(i,1) = "N/A" elseif i 50 then SumArray = SumArray - myArray(i-50,1) MyOtherArray(i,1) = SumArray/50 end if next i I think that's what you want. It ain't elegant, but I think it works. "Eric Johnson" wrote: What is the best way to calculate moving averages within VBA? I have an array of values: MyArray(1 to 1000, 1 to 1) I would like to fill MyOtherArray(1 to 1000, 1 to 1) with 50-value moving averages of the values in MyArray. So for x=1 to 49, MyOtherArray(x,1) would be equal to #N/A, because there are not yet 50 values to average For x=50, MyOtherArray(50,1) would be equal to the average of the first 50 values of MyArray. If I were calculating moving averages in a worksheet, I would take the average of 50 cell ranges using the offset function. What would be a good way to do this within VBA? Thanks! |
All times are GMT +1. The time now is 01:23 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com