web-dev-qa-db-ja.com

Excelが1つ以上の数式を計算しようとしたときにリソースが不足しました

コンピュータの[〜#〜] one [〜#〜]に「Excelでリソースが不足しています」というエラーメッセージが表示されました(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 32Bitを実行している両方

  • Windowsを起動した直後にExcelを実行し、

  • 2GBの開発PC RAMは問題なく実行できますが、

  • 6 GBの別のPC RAMが表示されましたran out of resources エラーメッセージ

  • 同じデータセット、同じExcelファイルで実行

また、開発用PCでは、約1.2GのRAMを使用しており、機能していないPCでは、900Mを使用しているRAM [更新]/[計算]アクションをクリックする前に。

[〜#〜]編集[〜#〜]

非稼働コンピューターは、100,000行のデータ内のデータを処理できます。

私の質問:

  1. なぜそれがより少ないメモリを備えたコンピュータで機能しているが、より多くのメモリを備えたコンピュータでは機能しないのですか? (主な質問)
  2. Excelで使用されるメモリを減らすにはどうすればよいですか? (副質問)(データ削除以外)

どんな助けでもありがたいです、私を正しい方向に向けるか、単にいくつかの手がかりを与えてください。

[〜#〜] edit [〜#〜]:数式を削除して、ロジックをvbaに移動し、10,000行あたりのデータをキャッシュすることでそれを実行しようと考えています。しかし、「更新」ピボットテーブルが同じエラーを表示する場合、これは私の問題を解決しません。

4
Larry

すべての提案、読み、助けに感謝します。私は問題を解決しました

  1. すべての数式を100,000行ごとに段階的に値に変更します---これにより、Excelが保持するメモリが10%削減されます
  2. ワークブック内の不要なデータ/ワークシートを削除しました(データマッサージ前の生データ)---これにより、Excelが保持するメモリが40%削減されます

そして、読み http://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-Microsoft-Excel.htm なぜ6Gかを示唆していますRAM PCでは、2Gではなくこの問題に直面していますRAM PC。 6G PCにはRAMも消費するExcelアドインがたくさんあるためだと思います。

助けてくれてありがとう。

2
Larry

その理由は、おそらく2つのPCで32ビットメモリの断片化が異なるためです(理論的に利用可能な2 GBのすべてを使用することはしばしば困難です)。
列の数を減らしたり、一部の列に必要なメモリを減らしたりすることで、ピボットテーブルが使用するメモリの量を減らすことができます(テキスト文字列が適切な候補です)。
(VBA PivotCache.memoryUsedを使用して、ピボットキャッシュによって使用されるメモリの量を測定できます)
私は、クエリデータをワークシートに配置してピボットをワークシートに配置するのではなく、クエリから直接ピボットキャッシュにデータを読み込んでピボットキャッシュを作成していると仮定します。
> 1000000の数式が何であるかを言わないので、それらの改善のための提案はありません。
Excelピボットなどで大量のデータを使用する場合、2 GBの制限がない64ビットバージョンのExcel 2010からより良い結果が得られます

3

古い質問ですが、すべてのバージョンでまだ有効です。ほとんどのフィールドが空であるにもかかわらず、使用した数式のスコープが大きすぎると、同様の問題が発生します。セルD1:D10のみに値がある場合。したがって、数式をデータ拡張の準備ができているように注意して、範囲を小さくしてください:)

1
mikus

答えは、64ビットバージョンのExcelにアップグレードすることです。はるかに大きなメモリ範囲に対応でき、大きなスプレッドシートを使用している場合は、一般的にはるかに高速で、ジョブに適したツールです。

1
Nathan Gould

非常に大きなExcelシートを作成しているようです。 32ビットアプリケーションは、特別な「スイッチ」で最大3.2GBを使用するように構成できない限り、最大2GBのRAMしか使用できません。そのため、Excel 32ビットは、実際には2GB後にメモリ不足になります。

したがって、16 GBでも32 GBでも問題ありませんRAM=。64ビットのMS Officeが必要なので、上記のRAMを自由に使用できます。 2GB。その場合にのみ、追加のRAMがExcelに実際に役立ちます。それ以外の場合は、2GBのRAMのみで実行する方法を理解する必要があり、ほとんどの場合、起動します。ハードドライブのページファイルを使用します。

1つの可能性は、Windowsページファイルのサイズを増やすことです。ウィンドウズにページファイルを管理させない。私はそれを1.5X物理に設定しますRAMそして最小および最大ページファイルサイズを同じに設定します。これはRAM断片化を防ぎます。したがって、4GBのRAMそれは6144/6144MB最小/最大です。

1
Byrna5

1つ可能 2GBのマシンではなく6GBのマシンでリソースが不足する理由は、Windows自体が2GBのメモリを管理するよりも6GBのメモリを管理するために多くのリソースを消費するためです。

これは32ビットWindowsでは既知の問題でした(16ビットWindowsではさらに大きな問題です)。 64ビットシステムで解決されるはずですが...

いずれにせよ、テストすることは可能です。余分なRAM=を無効にして、問題が解消するかどうかを確認してください。

0
user165568