こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAで数式を再計算する方法を知っていますか?
手動計算に設定しているシートを再計算してからデータを使いたいケースはよくあります。
そこで今回は、
- 数式を手動計算にする理由とは
- 手動計算・再計算・自動計算する方法とは
- 「毎回再計算をするのが大変」と感じる方向けのおすすめ情報
といった基礎的なことから、応用的な方法まで、徹底的に解説します!
数式を手動計算にする理由とは
まず、数式を手動計算にする理由について解説します。
Excelでは初期設定でセルの計算が自動計算になっています。
そのため、セルに値が書き込まれると「全てのセルに対して自動で再計算をする」ため、値を入れてすぐに結果を確認できるわけですね。
データ・数式を使いこなしてデータ集計・分析を使うExcelですが、計算された結果を使うことがほとんどなので、自動計算のままExcelを使っている人が多いです。
では、手動計算にするのはどのようなケースでしょうか。
自動計算は、リアルタイムに計算結果を反映してくれるので便利ですが、逆に言うと「全て必ず再計算してしまう」ため、数式が重たいセルが多いと全ての計算が終わるまでに時間がかかってしまいます。
セルに値を書き込むだけで数秒かかってしまうときもあるため、Excelが使いにくくなる原因になってしまいます。
そのため、「手動計算に変更してExcelを操作し、計算結果を使いたいときだけ再計算する」といった流れで操作する方が、速くExcelを操作することができます。
このような場合、「手動計算 + 再計算」を使います。
手動計算・再計算・自動計算する方法とは
次に、具体的な設定方法について解説します。
「手動計算に設定 → 必要な時だけ再計算 → 処理が終わったら自動計算に戻す」の流れで使うケースが多いため、3つの方法を合わせて覚えておくのがおすすめです!
使い方は次のとおりです。
使い方:
Sub Test() '画面更新停止 Application.Calculation = xlCalculationManual '手動計算 'メイン処理******************************** 'セルの値を使って計算したいときのみ再計算実行 Application.Calculate ‘***************************************** '画面更新再開 Application.Calculation = xlCalculationAutomatic '自動計算 End Sub
「Application.Calculation」で手動計算・自動計算をそれぞれ「xlCalculationManual」「xlCalculationAutomatic」で指定することができます。
処理の最初に「Application.Calculation = xlCalculationManual」を入れて手動計算にし、処理の最後に「Application.Calculation = xlCalculationAutomatic」で自動計算に戻しているわけですね。
メイン処理の中でセルの計算結果を使いたいときだけ、直前に「Application.Calculate」を書くことで再計算をしています。
このように、「手動計算 → 再計算 → 自動計算」の流れをセットで覚えておけば、処理の速度を速く保ったまま処理を動かすことができるので、とてもおすすめです!
ちなみに、再計算する方法はCalculateメソッドを含めて2つあります。
それぞれ以下のような違いがあります。
- Calculateメソッド :ワークシート・セル範囲を指定した再計算が可能
- CalculateFullメソッド:全てのデータを再計算
ワークシート、セル範囲を指定して再計算する場合は、次のように書きます。
ワークシート・セル範囲を指定して再計算する方法:
'Sheet1を再計算 Worksheets("Sheet1").Calculate 'A1:B10の範囲を再計算 Range("A1:B10").Calculate
計算に使いたいデータがシートをまたいで複数ある場合はCalculateFullメソッド、データの範囲が少ない場合はCalculateメソッドのように使い分けるのがおすすめです!
毎回再計算をするのが大変だと感じた方へ
ここまで読んだ方で、次のように思った方もいるのではないでしょうか。
確かに、「手動計算 → 再計算 → 自動計算」の流れで処理が作れるようになると、処理を高速化できるのは事実です。ただ、それで処理自体がわかりづらくなってしまっては元も子もないですよね。
そもそも、手動計算にする理由は「Excelの数式が重たく自動計算に時間がかかるから」です。
そのため、「Excelの重たい数式を速く動くように修正して、常に自動計算で処理を動かす」というのも一つの手です!
- 行全体・列全体を指定している数式がないか?
- ある場合は、範囲を少し抑えて指定できないか?
- 数式ではなく、VBAの処理に置き換えることで数式を軽くできないか?
といった方法で、Excelの数式は軽くすることができます。
「手動計算 → 再計算 → 自動計算」を自分で作っていくのが難しそう・・・と思った方は、数式を軽くできいないか考えみてくださいね!
合わせて覚えておくと便利な高速化対応について
今回は「手動計算 → 再計算 → 自動計算」の流れで処理を高速化する方法を解説しましたが、他にも覚えておくと便利な高速化テクニックはたくさんあります。
以下記事で高速化テクニックについて詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、VBAで手動計算・再計算・自動計算する方法について解説しました。
Excelの処理を軽くすることができるので、覚えておくととても便利です!
使い方も簡単なので、ぜひ使ってみてくださいね!