「Excelで1つ以上の数式を計算しようとしたときにリソースが不足しました」というエラーメッセージが表示されました。1つ私のコンピューターのうち 2 台。
私のワークシートには次のものが含まれています: (ワークブックではなく単一のワークシート内に、別のワークシートに数式があります)
1,000,000 種類の数式
- 900,000行のデータに基づくピボットテーブル
「シートの計算」アクション(現在のワークシートのみ)で Excel/VBA を実行すると、プログラムによって次のエラー メッセージが表示されます。
Excel ran out of resources while attempting to calculate one or more formulas
ピボットテーブルを「更新」(ExcelまたはVBA)したり、「シートの計算」(ExcelまたはVBA)を行ったりしません。
私は2台のコンピュータを持っています:
どちらも64ビットWindows 7を実行しており、
両方ともExcel 2007 32ビットを実行しており、
Windowsを起動してすぐにExcelを起動すると、
2GBのRAMを搭載した開発用PCは問題なく動作しますが、
6GBのRAMを搭載した別のPCでは
ran out of resources
エラーメッセージが表示された同じデータセット、同じExcelファイルで実行
また、開発用 PC では約 1.2G の RAM が使用されているのに対し、動作していない PC では、「更新」/「計算」アクションをクリックする前に 900M の RAM が使用されていることにも気付きました。
編集
非稼働コンピュータは10万行以内のデータを処理できる
私の質問:
- メモリが少ないコンピュータでは動作するのに対し、メモリが多いコンピュータでは動作しないのはなぜですか? (主な質問)
- Excel が使用するメモリを減らすにはどうすればよいですか? (サブ質問) (データを削除する以外)
どんな助けでも大歓迎です。正しい方向を示していただくか、ヒントをいただければ幸いです。
編集:数式を削除し、ロジックを VBA に移動し、データを 10,000 行ごとにキャッシュすることで実行することを考えています。ただし、ピボット テーブルを「更新」しても同じエラーが表示される場合、これでは問題は解決しません。
答え1
原因はおそらく、2 台の PC の 32 ビット メモリの断片化が異なることにあります (理論上利用可能な 2 GB をすべて使用することは難しいことがよくあります)。
列の数を減らしたり、一部の列に必要なメモリを減らしたりすることで、ピボット テーブルで使用されるメモリの量を減らすことができます (テキスト文字列は良い候補です)。
(ピボット キャッシュで使用されるメモリの量は、VBA PivotCache.memoryUsed で測定できます)
。クエリ データをワークシートに配置してピボットをワークシートのベースにするのではなく、クエリからデータを直接ピボット キャッシュに読み込んでピボット キャッシュを作成していると思います。この場合、メモリの使用量が大幅に増加します。1000000
を超える数式が何であるかがわからないため、改善案はありません。Excel
ピボットなどで大量のデータを使用する場合は、2 GB の制限がない 64 ビット バージョンの Excel 2010 を使用すると、より良い結果が得られます。
答え2
全ての提案、読書、そして助けに感謝します。私は問題を解決しました
- すべての数式を約 100,000 行ごとに段階的に値に変更します --- これにより、Excel が保持するメモリが 10% 削減されます
- ワークブック内の不要なデータ/ワークシートを削除します(データマッサージ前の生データ)---これにより、Excel が保持するメモリが 40% 削減されます。
そして読書http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htm2G RAM PC ではなく 6G RAM PC でこの問題が発生する理由を教えてください。6G PC には RAM を消費する Excel アドインが多数インストールされているためだと思います。
助けてくれてありがとう。
答え3
古い質問ですが、すべてのバージョンで有効です。フィールドのほとんどが空であるにもかかわらず、使用した数式の範囲が大きすぎる場合に同様の問題が発生します。たとえば、DO_CALCULATION(D1:D100000) は、セル D1:D10 にのみ値がある場合でも、かなりの時間とメモリを消費します。したがって、数式をデータ拡張用に準備するときは注意し、範囲を小さく保ってください :)
答え4
答えは、Excel の 64 ビット バージョンにアップグレードすることです。64 ビット バージョンは、はるかに広いメモリ範囲を処理でき、また、一般的にはるかに高速で、大きなスプレッドシートがある場合に最適なツールです。