2017-11-02 8 views
0

最終的にはヒストグラムに入力されるいくつかのデータ分析で使用するために〜60ビンに大量のデータ(最大100万エントリ) 。問題は、私は以下のコードを使用した場合ということです:WorksheetFunction.Frequencyを使用した後、常にVBAの範囲外になっています

Dim myBinnedData As Variant 
myBinnedData = Application.WorksheetFunction.Frequency(myData,myBins) 

「私がそうでなければ、私はそれが私がmyBinnedDataにアクセスすることはできません配列

に割り当てることができないというエラーを取得しbecuase myBinnedDataこの方法を暗くしなければなりませんでしたインデックスを使用して私がデータを取得できる唯一の方法はFor Eachループですが、各ポイントを処理する前に、myBinnedDataの最初と最後の要素が必要です。 For Eachループではすべて正常に動作しますが、インデックスを作成しようとすると(つまりdata = myBinnedData(0))、インデックス番号に関係なくインデックスの範囲外エラーが発生します。 TypeNameを使用して型をチェックし、Variant()でした。

問題は、WorksheetFunction.Frequency関数で作成された配列をインデックスする正しい方法は何ですか?

助けていただけたら幸いです!

+0

周波数出力は2次元(1からx、1から1)のようです。「debug.print myBinnedData(1,1)」を試してください – Zerk

+0

ありがとう!それは働いた – user2731076

答えて

2

frequencyは、2次元配列を返します(ただし、2次元目は、私が見る限り、1から1だけです)。

Debug.print lbound(myBinnedData, 1), ubound(myBinnedData, 1) 
    Debug.print lbound(myBinnedData, 2), ubound(myBinnedData, 2) 

を試してみてください最初の行には、下限と上限としてmyBins + 1の大きさとしてあなたに1を与える必要があります。
2行目は、下限と上限として1を与えます。ザークコメントで述べた、及びFunThomasが応答としてデータをループに は、

dim i as integer 
for i = lbound(myBinnedData, 1) to ubound(myBinnedData, 1) 
    Debug.print myBinnedData(i, 1) 
next i 
+0

答えをありがとう。それはそれをした! – user2731076

0

を使用し、周波数関数は、2次元配列を返すので、私はそれがmyBinnedData(インデックス1)を使用してインデックスすることができました。私はすでにそれを試みたと思ったが、私はそうは思わない!助けてくれてありがとう!

私はExcelシートからデータを呼び出さないのでNikolaosが提供する答えは一度も試したことがなく、印刷するだけです。 myData配列とmyBins配列はVBAコードで作成されます。

関連する問題