我想找到一组值的平均值。
我正在这样做:
Dim avg(1 To 14)
For i = 1 To 14
Dim helparray(1 To 3)
For j = 1 To 3
helparray(j) = Sheets("mysheet").Cells(i, j)
Next j
Avg(i) = Application.Average(helparray)
Erase helparray
Next i
的声明会发生什么helparray
?是否在每次迭代时重新声明?还是只是清洗了?
如何在每次迭代时创建一个新数组(然后删除它)?
avg
,正如您所说,它只会被清除。helparray
,然后将redim
其声明为您需要的大小。当您擦除它时,它将被删除(不会占用内存中的“空间”)。代码
Option Explicit
Sub testArrays()
Dim i As Long
Dim j As Long
Dim avg(1 To 14)
Dim helparray() As Variant
For i = 1 To 14
ReDim helparray(1 To 3)
For j = 1 To 3
helparray(j) = Sheets("mysheet").Cells(i, j)
Next j
avg(i) = Application.Average(helparray)
Erase helparray
Next i
Debug.Print Join(avg, vbLf)
End Sub
Sub testArrays2()
Dim i As Long
Dim j As Long
Dim avg(1 To 14)
For i = 1 To 14
avg(i) = Application.Average(Sheets("mysheet").Cells(i, 1).Resize(, 3))
Next i
Debug.Print Join(avg, vbLf)
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句