Excel VBAで超大量にループしまくる関数を1000回くらい呼びまくっています。
グローバル変数を使うと速くなりますか?
追記
今、1年365日分のデータをセルから配列変数に代入して2重ループする関数を1000回くらい呼んでます。ユーザーからちょっと重いと言われており、高速化したいのですが、計算結果をグローバル変数に保持して、2重ループの前で条件判定して不要な2重ループを通る回数を減らすと多少は速くなるのでしょうか?
今、ファイルを開くときに10秒くらい、セルの値を変更したときの再計算に2秒くらい掛かっています。
ちなみに、計算結果を空いているセルに書き込んで、2重ループの計算が不要なときはそのセルの値を参照するように修正してみたところ、速くなるどころかむしろ遅くなった上に他の人がソースコードを見たらワケわからんプログラムになってしまったので、そのやり方は中止しました。その修正とテストで半日無駄にしてしまいました。
追記
エクセルは再計算不要なときは自動的に再計算をスキップしているような気がします。
再計算して欲しいときでも勝手に再計算しないで値が変わらないこともあるし、その辺りのエクセルの仕様がよくわかりません。
どんなコードでどういうパフォーマンスが出てるか知らないですが、やってみればわかるのでは。
この質問者は例の荒らしなので触らなくていいと思います。
https://teratail.com/questions/361720
あぁ解決する気なしの人ですね。赤の他人にアドバイス求めるのにコードなしって無理がある。もうお金払ってやってもらいな。通報はしとく。