これは私が説明するのは難しいものですから、これまでのコードから始めて、後で私が達成しようとしているコードから始めます。カスタムタイプの配列の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
の特定の変数の平均値を取得したい、と10,000レコード(またはそれ以上)があることができて、私は、ループを使用する必要はありません。
Average
機能で値を取得する方法はありますか。
2次元配列に切り替える必要がありますか?多分3次元配列ですか?
なぜループを使いたくないのですか?数千回の繰り返しでも非常に高速です。 – Graham
「平均」はどのように実装されていますか?ああ、そうだよ!ループ! –