ほとんどすべての UDF を使用する Excel モデルがあります。たとえば、120 列と 400 以上の行があります。計算は垂直に行われ、次に水平に行われます --- つまり、最初に列 1 のすべての計算が行われ、次に列 1 の最終的な出力が列 2 の入力になります。各列で、約 6 つまたは 7 つの UDF を呼び出します他の UDF を呼び出します。多くの場合、UDF は配列を出力します。
各 UDF への入力は、いくつかの変数、一部の範囲変数、一部の double です。範囲変数は、その内容がアクセスされる前に、内部で配列に変換されます。
私の問題は次のとおりです。UDF なしで Excel モデルを構築でき、シミュレーションを実行すると、すべての計算を X 時間で完了することができます。UDF を使用すると、シミュレーション時間が 3 倍以上になります。(明らかな質問に答えるには、はい、UDF を使用する必要があります。モデルに小さな変更を加えたい場合 (別の資産タイプ (金融モデル) を追加するなど) は、モデルを作り直すのにほぼ 1 日かかります) UDF を使用しない場合は、新しい法的/財務構造に適合しますが、UDF を使用すると、異なる財務構造に対応するのに約 20 分かかります。)
いずれにせよ、画面の更新をオフにしました。関数にコピーと貼り付けはありません。バリアント型の使用は最小限で、すべてのデータは 1 つのシートに含まれています。内容を取得する前に、すべての範囲型変数を配列に変換します。 .
VBAコード/Excelファイルをより高速に実行するために、より高速なコンピューターまたは同等のものを入手する以外に、他に何ができますか? これについてさらに説明が必要な場合はお知らせください。
ありがとう!