Excel ブックをクリーンアップして使用メモリを減らす方法
現象
Office 2013、2016、Microsoft 365 にアップグレードすると、次の現象の 1 つまたは複数が発生します。
複数の Microsoft Excel 2013 ブックを開いたり、Excel ブックを保存したり、Excel ブックで計算を行ったりすると、コンピューターが多くのメモリを消費します。
Excel 2013 または Excel 2016 にアップグレードする前のように、同じインスタンスで多くの Excel ブックを開くことができなくなりました。
Excel ブックに列を挿入すると、使用可能なメモリに関するエラーが発生します。
Excel スプレッドシートを操作しているとき、次のエラー メッセージが表示されます。
There isn't enough memory to complete this action. Try using less data or closing other applications. To increase memory availability, consider: - Using a 64-bit version of Microsoft Excel. - Adding memory to your device.
原因
Excel 2013 から、以前のバージョンよりも多くのシステム リソースを必要とする改善が行われました。 この記事では、多くのメモリを使用する Excel ブック内の場所を特定し、ブック ファイルをより効率的に動作させる方法について説明します。
Excel 2013 で行われた変更の詳細については、「32 ビット 版 Excel 2013 のメモリ使用量 」を参照してください。
解決方法
この問題を解決するには、以下の方法を記載されている順に実行します。 どの方法でも問題が解決しなかった場合は、次の方法に進みます。
注:
多くの Excel ブックに問題となりうる事がらがいくつかあります。 これらの問題を解消すると、ブックをスムーズに実行できるようになります。
書式設定について
書式を設定すると、Excel ブックが大きくなって正しく動作しなくなる可能性があります。 書式設定の問題が原因で、Excel がハングしたり、クラッシュしたりすることがよくがあります。
方法 1: 余分な書式設定を削除する
Excel ブック内に余分な書式があると、ファイルが大きくなってパフォーマンスが低下する可能性があります。 列全体または行全体を色や罫線で書式設定すると、書式設定が過剰と見なされます。 この問題は、書式設定を行うときに、Web ページやデータベースからデータのコピーやインポートが必要な場合にも発生します。 余分な書式を削除するには、「ワークシートの不要なセル書式を削除する」にある書式削除アドインを使用します。
余分な書式を削除しても問題が発生する場合は、方法 2 に進みます。
方法 2: 使用していないスタイルを削除する
スタイルを使用すると、ブック全体で使用する書式を標準化できます。 セルをあるブックから別のブックにコピーすると、そのスタイルもコピーされます。 このようなスタイルによってファイルが肥大化し、ファイルを古いバージョンで保存しようとすると、「セルの書式が多すぎます」というエラー メッセージが表示されることがあります。
使用されていないスタイルを削除するには、多くのユーティリティを使用できます。 XML ベースの Excel ブック (つまり、.xlsx ファイルまたは xlsm ファイル) を使用している限り、スタイル クリーナー ツールを使用できます。 このツールについては、こちらを参照してください。
未使用のスタイルを削除しても問題が発生する場合は、方法 3 に進みます。
方法 3: 図形を削除する
スプレッドシートにたくさんの図形を追加すると、メモリを多く消費します。 図形は Excel グリッド上のオブジェクトとして定義されます。 次に、いくつかの例を示します。
- グラフ
- 図形の描画
- Comments
- クリップ アート
- SmartArt
- ピクチャ
- WordArt
これらのオブジェクトは、Web ページや他のワークシートからコピーされたものであり、隠れていたり、互い重なりあっていたりすることがよくあります。 多くの場合、ユーザーはそれらの存在に気づいていません。
図形を確認するには、次の手順を実行します。
- ホーム リボンで、[検索と選択] をクリックしてから、[オブジェクトの選択と表示] をクリックします。
- [このシート上の図形] をクリックします。 図形が一覧に表示されます。
- 不要な図形を削除します。 (目のアイコンは、図形が表示されているかどうかを表しています)
- 各ワークシートについて、手順 1 ~ 3 を繰り返します。
図形を削除しても問題が発生する場合は、書式設定には関係のない考慮点について検討する必要があります。
方法 4: 条件付き書式を削除する
条件付き書式を設定すると、ファイルが大きくなる可能性があります。 これは、ファイル内の条件付き書式が破損している場合に発生します。 条件付き書式を試験的に削除すると、書式設定の破損が問題であるかどうかを確認できます。 条件付き書式を削除するには、次の手順を実行します。
- ファイルのバックアップを保存します。
- ホーム リボンで [条件付き書式] をクリックします。
- ワークシート全体からルールを削除します。
- ブックのワークシートごとに、手順 2 ~ 3 を繰り返します。
- ブックを別の名前で保存します。
- 問題が解決したかどうか確認します。
条件付き書式を削除すると問題が解決した場合は、元のブックを開いて、条件付き書式設定を削除してから適用し直します。
問題は解決しましたか。
これらの方法でうまくいかない場合は、64 ビット版の Excel に移行したり、問題のあるブックをいくつかのブックに分割したり、サポートに連絡してさらにトラブルシューティングを行うなどの方法を検討してください。
計算式について
書式設定だけでなく、計算によってもクラッシュやハングが Excel で発生する可能性があります。
方法 1: 最新版の Excel でブックを開きます
Excel の新しいバージョンで初めて Excel ブックを開く際に、膨大な数の計算式が含まれていると動作が遅くなる場合があります。 ブックを初めて開く際、Excel はブックを再計算し、ブック内の値を確認する必要があります。 詳細については、次の資料を参照してください。
Excel の再計算が完了してファイルを保存した後もファイルがなかなか開かない場合は、方法 2 に進んでください。
方法 2: 数式
ブックを調べて、使用している数式の種類を確認します。 一部の数式には多くのメモリが必要です。 これには、次の配列数式が含まれます。
- LOOKUP
- INDIRECT
- OFFSET
- INDEX
- MATCH
これらは使用して問題ありません。 ただし、参照する範囲に注意してください。
列全体を参照する関数は、.xlsx ファイルでパフォーマンスの低下を引き起こす場合があります。 グリッド サイズは、65,536 行から 1,048,576 行、および 256 (IV) 列から 16,384 (XFD) 列へと拡大されました。 ベスト プラクティスではないものの、数式を作成する一般的な方法は列全体を参照することでした。 以前のバージョンで 1 つの列のみを参照していた場合は、65,536 セルのみを含めていました。 新しいバージョンでは、100 万列を超える列を参照しています。
次の VLOOKUP を使用するとします。
=VLOOKUP(A1,$D:$M,2,FALSE)
Excel 2003 以前のバージョンでの VLOOKUP は、655,560 セル (10 列 x 65,536 行) が含まれる行全体を参照していました。 拡大された新しいグリッドでは、この関数はおよそ 1,050 万セルを参照します。(10 行 x 1,048,576 行 = 10,485,760)
これは、Office 2016/365 バージョン 1708 16.0.8431.2079 以降で修正されています。 Office の更新方法については、「Office 更新プログラムのインストール」を参照してください。
以前のバージョンの Office では、数式に必要なセルのみを参照するために数式の再構築が必要になる場合があります。
注:
定義名を確認して、列または行全体を参照している他の数式がないかどうか確認します。
注:
このシナリオは、行全体を使用する場合にも発生します。
使用されているセルのみを参照するように数式を変更した後も引き続き問題が発生する場合は、メソッド 3 に進みます。
メソッド 3: ブック全体での計算
ブック全体で計算を行う数式を制限します。 これは、次の 2 つの場合に重要です。
- ネットワーク経由でファイルを開こうとしている場合。
- Excel で大量のデータを計算しようとしている場合。
ネットワーク間で計算を行う代わりに、1 つのブックに数式を含めて、あるブックから別のブックへの単純なリンクを作成します。
ブック全体で計算するのではなく、セルのみを参照するように数式を変更した後も引き続き問題が発生する場合は、メソッド 4 に進みます。
メソッド 4: 可変関数
ブック内の可変関数の使用を制限します。 何百ものセルで TODAY 関数または NOW 関数を使用する必要はありません。 スプレッドシートに現在の日付と時刻を含める必要がある場合は、関数を 1 回使用し、定義されたリンク名を使用して関数を参照します。
可変する数式を制限した後も引き続き問題が発生する場合は、メソッド 5 に進みます。
メソッド 5: 配列数式
配列数式は強力です。 ただし、正しく使用する必要があります。 必要以上に多くのセルを配列に追加しないことが重要です。 配列内のセルに計算が必要な数式がある場合、この数式が参照するすべてのセルの計算を行います。
配列の動作の詳細については、「Excel 2010 のパフォーマンス: パフォーマンスの障害を最適化するためのヒント」を参照してください。
配列数式を更新した後も引き続き問題が発生する場合は、メソッド 6 に進みます。
メソッド 6: 定義された名前
定義された名前は、ブック全体でセルと数式を参照して、数式に "フレンドリ名" を追加するために使用されます。 他のブックまたはインターネット一時ファイルにリンクされている定義された名前がないか確認します。 通常、これらのリンクは不要であり、Excel ブックの起動が遅延する原因となります。
名前の管理ツールを使用して、Excel インターフェイスで表示できない非表示の定義された名前を表示できます。 このツールを使用すると、不要な定義された名前の表示と削除を実行できます。
不要な定義された名前を削除した後も Excel のクラッシュとハングが発生する場合は、メソッド 7 に進みます。
メソッド 7: リンクとハイパーリンク
主な Excel 機能は、他のスプレッドシートからライブ データを提供できることです。 ファイルとリンク先の外部ファイルのインベントリを作成します。 Excel には、リンクできる Excel ブックの数の制限はありません。ただし、発生し得る問題が複数あります。 リンクを外してファイルをテストし、このファイルに問題があるのか、またはリンクされているいずれかのファイルに問題があるのかを確認します。
移動中
これらは、Excel でハングとクラッシュを引き起こす原因となる最も一般的な問題です。 引き続き Excel でクラッシュやハングが発生する場合は、Microsoft にサポート チケットを申請することをご検討ください。
詳細情報
これらの方法のいずれも違いがない場合は、64 ビット バージョンの Excel に移行するか、問題のあるブックを別のブックに分割することを検討する必要があります。