這對我來說是一個棘手的問題,所以我將從我到目前爲止的代碼開始,然後再以我嘗試實現的代碼開始。如何計算自定義類型數組的1個變量的平均值
Option Explicit
Public eSigTickerArr As Variant
' Public type to save array
Type Watchlist
eSigTicker As String
Op As Double
Hi As Double
Lo As Double
Cl As Double
Vol As Double
BarTime As Variant
End Type
Public WatchlistArr() As Watchlist ' save an array of special type "Watchlist"
'====================================================================
Sub Mainr()
ReDim WatchlistArr(0) ' init array size
eSigTickerArr = Array("Part1", "Part2", "Part3")
For Each eSigTickerElem In eSigTickerArr
' check if first member of array is occupied
If WatchlistArr(0).eSigTicker <> "" Then ' not first time running this code >> increase array size by 1
ReDim Preserve WatchlistArr(UBound(WatchlistArr) + 1) ' increase array size by 1
End If
' ... Some Code, working fine ....
' populate array Type with data (also works)
With WatchlistArr(UBound(WatchlistArr))
.eSigTicker = eSigTickerElem
.Op = LastCSVLine(2)
.Hi = LastCSVLine(3)
.Lo = LastCSVLine(4)
.Cl = LastCSVLine(5)
.Vol = LastCSVLine(6)
.BarTime = LastCSVLine(1)
End With
Next eSigTickerElem
' ******* calculate the average of only "Hi" ******
Dim myAvg
myAvg = WorksheetFunction.Average(WatchlistArr.Hi) '<--- Getting an Error !
End Sub
我在該行收到錯誤高於目前的代碼。
我的挑戰:我想要得到的平均只有我喜歡的類型數組WatchlistArr
的某個變量的,我不希望使用一個循環,因爲可以有10000條記錄(或更多)。
有沒有辦法用Average
函數獲取數值?
我應該切換到二維數組嗎?或者也許3-D數組?
爲什麼你不想使用循環?它們非常快,甚至有數以萬計的迭代。 – Graham
'平均'可能如何實施?哦,沒錯!一個循環! –