0
Excelを出力するための高速バージョンメソッドはありますか?ExcelシートへのVBA配列の高速出力
私は現在、3つのアレイoutput_dt, output_s1, output_s2
に格納されたデータを持っています。
フォーマットのサンプル:
15/12/2017 2165 2170
15/12/2017 2165 2175
15/12/2017 2165 2180
15/12/2017 2165 2185
15/12/2017 2165 2190
15/12/2017 2165 2195
15/12/2017 2165 2200
15/12/2017 2165 2205
15/12/2017 2165 2210
私の現在の作業ソリューションはこれです:
Application.ScreenUpdating = False
Worksheets("Strategies").Columns(4).ClearContents
Worksheets("Strategies").Columns(5).ClearContents
Worksheets("Strategies").Columns(6).ClearContents
[d1].Resize(UBound(output_dt)) = Application.Transpose(output_dt)
[e1].Resize(UBound(output_s1)) = Application.Transpose(output_s1)
[f1].Resize(UBound(output_s2)) = Application.Transpose(output_s2)
Application.ScreenUpdating = True
しかし、これだけでも150行ため、痛々しいほど遅いです。
これをスピードアップする方法はありますか?
計算を手動に設定していますか?そうでなければ、あなたの '[d1] .Resize(UBound(output_dt))= Application.Transpose(output_dt)'ステートメントのそれぞれの後に、あなたのワークシートが多くの計算を処理している可能性があります。それ以外に、私はなぜそれが全く遅くなるのか理解できません。 – YowE3K
同じ1つの2D配列に3つの列を配置できない理由はありますか? 'Worksheet.Change'でハンドラーを実行していますか? 'Application.EnableEvents'はオフですか? '[d1]'表記は暗黙的にアクティブなワークシートを参照しています、それは意図されていますか?同じワークシートを明示的に3回間接参照し、アクティブシートであると仮定して暗黙的に3回繰り返します。一度しかできませんでした。腸の感覚は、それが永遠に取っている 'ClearContents'コールだと言います。数百万の行を持つバリアント配列をダンプすることは、それ以外の場合にはかなり瞬時になります。 –
YowE3K - 前後の自動計算をオフにしたときのように、これが解決しました。私はそれが各機能の間に再計算されることに気づいていなかった。 マットのマグ - いいえ - 元のソースコードでどうやってやるのがうまくいかなかったのです(正しい方向に向けることができれば、下に追加されます)。 3枚のシートを指定するだけでなく、ActiveSheetを参照するのが遅いのですか? – LLC