巨大な表で再計算が発生すると、PCの性能次第ではExcelの反応が大幅に鈍くなってしまうことがある。このような表では、再計算をオフにするとよい。その方法を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
対象:Excel 2013/2016/2019
表計算アプリケーションでは、1つのセルの値を変更すると、そのセルの値を参照しているセルの計算式が自動的に実行されて値が自動的に変更される。いちいち、再計算を指示する必要がないため、誤って古い値のまま結果を出力してしまうといったことを防ぐことができる。ただ、巨大な表を扱うときには、この自動再計算が足かせとなり、反応が鈍くなったり、場合によっては応答がかなり遅れたりすることがある。
例えば、Microsoftが提供している「ベストが分かる! SUUMO式住宅ローン比較テンプレート」といったような住宅ローンの返済シミュレーションを行うような場合、毎月の残高や金利分などを計算するため、意外と巨大な表となる。こうした表で、条件を変更しながらシミュレーションを行うと、毎回、多数のセルで再計算が行われ、表の更新に時間がかかってしまう場合がある。特に非力なプロセッサを利用している、あるいは搭載メモリが少ない機種では、大量の計算が行われる場合に応答が鈍くなることが少なくない。
ハードウェアの進歩とともに、扱える表のサイズは大きくなってきた。とはいえ、それでも、搭載メモリ容量やプロセッサ性能によっては、大きな表を扱うときに反応が鈍くなることがある。現在の「Microsoft Excel(エクセル)」は、理論上は縦100万行、横1万6000列の表を扱うことができる。ただ、これはあくまでも理論的な行と列の最大値であって、実用的な上限はこの手前にある。今回は、このExcelの再計算の秘密を解き明かす。
まず、Excelで自動再計算を「オフ」にする方法から説明しよう。Excelの[数式]タブの[計算方法の設定]グループにある[計算方法の設定]をクリックして、メニューの[手動]を選択する。キーボードショートカットならば、[Alt]+[M]キーの後、[X]キー、[M]キーを順番に押せばよい。これで計算方法の設定が「手動」、つまり自動再計算が「オフ」になる。
自動再計算を「オフ」にしたときに、必要になるのが「再計算」の指示だ。これは、リボンからも行うことができる一方で、キーボードショートカットを使うことで、より細かく指示を出せる。下表が、現在のExcelが装備している再計算のキーボードショートカットだ。実際には、5種類の再計算方法がある。また、VBAを使うとセル範囲を限定した再計算などさらに細かい制御が可能になる(本稿ではそこまでは触れない)。
対象 | 再構築(強制的な再計算) | ショートカットキー | リボン |
---|---|---|---|
アクティブシート | × | [Shift]+[F9] | [数式]タブ−[シート再計算] |
開いている全てのブック | × | [F9] | [数式]タブ−[再計算実行] |
アクティブブック | ○ | [Ctrl]+[Alt]+[Shift]+[F9] | なし |
開いている全てのブック | ○ | [Ctrl]+[Alt]+[F9] | なし |
数式バー内の数式計算 | − | [F9] | なし |
Excelが装備している再計算のキーボードショートカット |
このキーボードショートカットは、対象と計算方法が違う。一般的には、作業中のワークシートだけ再計算する[Shift]+[F9]キーや、開いているブックファイル全てを再計算する[F9]キーが知られており、既に利用している人もいるだろう。しかし、Excelでは、他の再計算方法を使わねばならない場合が幾つかある。少々複雑なので、基本的なところから順序立てて説明する。
「計算方法の設定」(自動再計算モード)とは、再計算を自動で行うか、手動でユーザーが指示するのかを示すものだ。「計算方法の設定」は、「動作中のExcelの状態」だが、ブックに設定として記録される。
例えば、最初に「計算方法の設定」が手動(以下手動モードと呼ぶ)になったブックを読み込むと、Excelは「手動モード」となり、以後、「計算方法の設定」が自動(以下、自動モード)になったブックを読み込んでも、「計算方法の設定」は変わらず、手動モードのままになる。最初に読み込んだブックの状態が何であっても、ユーザーが一度、手動モードを設定すれば、以後、自動モードで保存したブックを読み込んでも手動モードのままである。
ユーザーが自動モードを指定したり、自動モードになったブックを最初に読み込んだりした場合、あるいはブックを新規作成した場合、Excelは自動モードになり、手動モードが指定されたブックを読み込んでも自動モードのままになる。これを理解しないと、「計算方法の設定」の保存がうまく動いていないように見えてしまうので注意してほしい。
Excel起動直後 | 2つ目に開いたブックが手動モード | 2つ目に開いたブックが自動モード | |
---|---|---|---|
新規ブック | 自動 | 自動 | 自動 |
手動モードブック | 手動 | 手動 | 手動 |
自動モードブック | 自動 | 自動 | 自動 |
新規ブックなどと「計算方法の設定」の関係 |
「計算方法の設定」は、Excelの[数式]タブの[計算方法の設定]グループにある[計算方法の設定]メニューで選択する。キーボードショートカットならば、[Alt]+[M]キーの後、[X]キーを押せばよい。自動再計算を実行するようにするには「自動」、実行しないようにするには「手動」を選択する。
なお、「データテーブル以外自動」は、[データ]タブにある[予測]グループの[What-If分析]−[データテーブル]などを使って作成されたデータテーブルの計算以外を自動にするというものだ。「What-If分析」などを利用していない場合は、「自動」または「手動」のいずれかを選択しておけばよい。
また、[ファイル]タブの[オプション]を選択し、表示される[Excelのオプション]ダイアログでも同じ設定ができる。[Excelのオプション]ダイアログの左メニューで[数式]を選択して、右ペインの「計算方法の設定」欄で「計算方法の設定」を選択すればよい。キーボードショートカットならば、[Alt]+[F]キーの後、[T]キーで[Excelのオプション]ダイアログを開いて、[数式]を選択する。
リボンと比べると、[Excelのオプション]ダイアログでは、手動モード時に「ブックの保存前に再計算を行う」のオン/オフが可能だ。ただし、この設定はデフォルトで有効なので、特に「オフ」にする必要がなければ、リボンでも[Excelのオプション]ダイアログでも同じ結果となる。
実際、「ブックの保存前に再計算を行う」を「オフ」にするのは、保存時に再計算が待っていられないぐらい長くなる場合だ。「長い」の定義は人によるとはいえ、一般的に処理時間が10分以上かかる場合、クラッシュしたと勘違いしてタスクを削除してしまう可能性や、緊急シャットダウン時にブックの保存に失敗するといったトラブルの可能性があるので、できれば避けた方がよいだろう。
Excelでは、通常の利用では、[F9]キーや[Shift]+[F9]キーといった通常の再計算で十分だ。しかし場合によっては、ブック内部データの再構築を伴う「強制的な再計算」を実行しなければならないことがある。
Excelの関数の中には、再計算を手動で実行しないと値が変わらないものがある。例えば、Now関数(現在の日付と時刻を表示する関数)は、前回計算した値のままになるため、正しい日時にするためには手動で再計算を実行する必要がある。
このように関数によっては、手動で再計算を実行しないと正しい値にならないものもあるので注意が必要だ。
Excelは、バージョンの異なるExcelで作成されたブックを読み込んだとき、「依存関係ツリー」や「計算チェーン」の再構築を行うことになっている。
Excelは、再計算処理を高速化するため、事前に2つの情報を作成する。最初に作られるのは、「依存関係ツリー」と呼ばれる数式から得られるセル間の依存関係の情報だ。「A1セル」から「A14セル」まで下のセルの値を使って計算を行う数式が入っていたとする。このような場合、「A1セル」の数式を計算するためには、「A2セル」の計算を完了させる必要があり、「A2セル」の数式を計算するには「A3セル」の数式を計算する必要がある。このように数式に他のセル参照を入れると、セル間に依存関係が出来上がる。
Excelは開いている全てのシートで、この依存関係を情報として記録する。さらに、この依存関係ツリーを使い、計算をどのような順番でやるのかという「計算チェーン」と呼ばれる情報を作る。計算チェーンは、簡単に言えば再計算の手順そのものだ。
しかし、場合によっては、完全に更新が行われないことがある。例えば、2019年前半にリリースされたOffice 365では、「[$-x-sysdate]」を含む日付の書式設定は、違う環境で開いても表示が更新されなかった(現在のOffice 365ではブックの読み込み時に正しく更新される)。
こうした場合、ブックを読み込んだ後、[Ctrl]+[Alt]+[Shift]+[F9]キーまたは[Ctrl]+[Alt]+[F9]キーを使って強制再計算を行って、Windows OS側の日付書式を反映させる必要がある。Excelのバージョンなどにも依存するため、他人から受け取ったり、バージョンの異なるExcelで作成したブックファイルだったりした場合には、一回、手動で強制再計算を行わせた方が安全だ。
またExcelは、依存関係ツリーや計算チェーンを、一回作ったものを元にセルの入力編集に合わせて部分的に修正していく。Excelの編集はセル単位なので、入力編集されたセルだけをすでにある依存関係ツリーや計算チェーンに反映させるだけで済む。
しかし、このとき何らかの原因で、セルの値や数式とExcel内部の状態が一致しなくなることがある。そうなると、通常の再計算では結果が更新されないといった問題が起きる。特に1つのブックファイルを長期間にわたって修正していくような場合には、内部状態とセル状態に齟齬(そご)が起こる可能性がある。
前述のように、ブックを開くExcelのバージョンが変わると自動的に再構築が行われる。逆にいえば、Excelのバージョンが同一だと再構築が起こらないことがある。そのため、永続版のMicrosoft Office(サブスクリプションのOffice 365でないもの)をバージョンアップせずに使い続けていると、こうした問題が起きやすい。このため、時々、強制再計算を行わせ、内部状態を再構築させた方がよい。
4つの再計算キーボードショートカットの使い分けを説明しておく。そもそも、キーボードやリボンから「再計算」指示する必要があるのは、「計算方法の設定」が手動の場合だ。自動ならば、問題がない限り再計算を指示する必要がない。
通常は、押しやすい[F9]キーを使うのが便利だ。ただし、ブックの各シートに巨大な表があり、全てを再計算させると処理が重くなるような場合には、[Shift]+[F9]キーを使って、作業中のワークシートのみに再計算を限定する。
他のバージョンのExcelで作成されたブックなどの場合には、一回、[Ctrl]+[Alt]+[Shift]+[F9]キーでブックの再計算関連の内部情報を再構築させた方がいいだろう。
また、相互に参照している複数のブックを使う場合など、できれば時々、全てのブックを開いた状態で[Ctrl]+[Alt]+[F9]キーを使い、全てのブックを強制再計算させた方がよい。ただし、これらは、あくまでも防衛的に行うもので、通常は行う必要がないし、高い頻度で行う必要もない。
Copyright© Digital Advantage Corp. All Rights Reserved.