スライドショー

【ExcelVBA】手動計算・再計算・自動計算を設定する方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、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の数式は軽くすることができます。

「手動計算 → 再計算 → 自動計算」を自分で作っていくのが難しそう・・・と思った方は、数式を軽くできいないか考えみてくださいね!

合わせて覚えておくと便利な高速化対応について

今回は「手動計算 → 再計算 → 自動計算」の流れで処理を高速化する方法を解説しましたが、他にも覚えておくと便利な高速化テクニックはたくさんあります。

以下記事で高速化テクニックについて詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】処理の実行時間を高速化する方法を徹底解説!
更新日 : 2019年8月28日

まとめ

今回は、VBAで手動計算・再計算・自動計算する方法について解説しました。

Excelの処理を軽くすることができるので、覚えておくととても便利です!

使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説