(更新日:2022/02/10)
最近Excelの動作がなんだか重い、引き継いだ資料が度々フリーズしてしまう。というような悩みを解決するための記事です。Excelの揮発性関数と呼ばれる関数を大量に使用していると、再計算に時間がかかり、結果として、Excelが重くなったり、フリーズが多発する原因になります。この記事では、そんなときの対処法についても共有していきます。
想定読者
「Excelの動作がなんだか重い。。。」という方。
「このExcelファイルを操作すると、くるくるが出ちゃうんだよな。」という方。
揮発性関数とは?
Excelの関数の中には、揮発性関数(Volatile Fuctions)というものがあります。
少し言い方を変えると、揮発性関数=自動再計算関数です。
この関数を使用しているセルは、シート内に変更が生じた場合に、
自動で再計算が行われます。
この自動再計算が、Excelの動作を遅くしたり、フリーズを発生させる要因になります。
Microsoftの記事によると、次の8種類があるそうです。
揮発性関数 | 結果 | 数式 |
1. NOW | 2022/2/10 08:00 | =NOW() |
2. INDIRECT | 2. INDIRECT | =INDIRECT(“A3”) |
3. TODAY | 2022/2/10 | =TODAY() |
4. OFFSET | 6. INFO | =OFFSET(A5,2,0,) |
5. RANDBETWEEN | 2 | =RANDBETWEEN(1,10) |
※6. INFO | C:\Users\owner\OneDrive\ドキュメント\ | =INFO(“DIRECTORY”) |
※7. CELL | $A$6 | =CELL(“address”,A6) |
※8. SUMIF | 0 | =SUMIF(A1:A8,””,B1:B8) |
この中で使用頻度が多そうなのは、TODAY関数とSUMIF関数でしょうか?
ただし、INFO、CELL、SUMIF関数については、
引数によって、揮発性関数になったり、ならなかったりするみたいです。
なぜExcelが重くなるのか?
Excel には 3 つの計算モードがあります。
通常は「自動」の状態です。
- 自動
- テーブル以外自動
- 手動
Excelの計算モードについては、「数式」→「計算方法の設定」から確認できます。
計算モードは通常、自動に設定されており、数式で参照しているセルに変更が生じた場合に
参照先のセルへ変更を自動で連携することができます。
しかし!
揮発性関数の場合は、その関数の引数が変更されていなくても、
ある瞬間と次の瞬間では値が異なる可能性があると見なされる関数です。
Excel は、再計算のたびに、揮発性関数が含まれているセルをすべての参照先と共に
再評価します。
このため、揮発性関数に依存しすぎていると、
再計算にかかる時間が長くなる可能性があります。
解決方法
一番は揮発性関数を使わないことですが、そうは言っても、中には全く代わりが利かない
関数もありますよね。
ただし、揮発性関数がまったくダメというわけではなく、大量のデータを扱うと、
ファイルの動作が重くなったり、フリーズが頻発するリスクが高まるという話です。
とくに大量の数式を扱う場合に、個人的におススメな解決方法は、
一度計算が終わったら、数式が入っている範囲の最上段の行だけを残し、
残りを「数値貼り付け」にしてしまうことです。
もしも、再度計算が必要なときは、最上段の行を下へコピーすればいいだけ。という
状態にしておきます。こうすれば、数式を利用しているセルを最小限にして、
Excelの再計算時間をミニマムにできます。
まとめ
今回の記事では、Excelの揮発性関数についてまとめてみました。
Microsoftもなるべく揮発性関数を使用しないようにコメントしていますが、
どうしも必要なときもありますよね?
そんなときは、大量に関数を使用せずに数値貼り付けにするなど、
うまく工夫して、動作を軽くしていきましょう!
そのほかのExcel不具合については、以下の記事を参照ください。
「Excelが突然フリーズした!?Excelが動かなくなったときの対処法まとめ。」
ではでは!