Excel の自動回復が 16 GB の RAM をすべて消費し、処理に時間がかかる 32 MB のファイルをまったく読み込めません。

Excel の自動回復が 16 GB の RAM をすべて消費し、処理に時間がかかる 32 MB のファイルをまったく読み込めません。

自動回復に関する質問は見つけられる限りすべて読みましたが、ファイルが表示された場合に役に立つ質問もありますが、これは違うようです。

私は非常に大きなデータセットを扱っていました。そのデータセットをコピーして、最後の数列で生データに対してかなり広範囲な計算を行うテーブルに貼り付けました(これがロードされた場合、列の順序を確認する必要があります... 考えられる問題は、操作が左から右に順序どおりに行われず、処理のループが作成されていることです。小さなデータ セット (数千行) で目立つことはありませんが、数万行になるとゲーム チェンジャーになる可能性があります...

テーブルの処理が完了するまでに約 5 時間かかりました。保存しようとしましたが、その間にコンピューターのネットワーク ドライブが失われました (これも厄介な問題です)。そのため、ネットワークの場所 (ネットワーク ドライブと同じですが、サーバー名ではなく IP アドレスを使用しています。問題なく保存されたようです) に保存しました。

RAM とその他すべてをクリアするために再起動し、保存したドキュメントを開こうとしました。Excel はファイルが破損していると表示し、エラー チェックを完了するのにさらに 5 時間ほどかかりました。表の書式設定が削除され、数式の多くが失われていました... すべてまったく問題なく、簡単に回復できます。ネットワークの問題を回避するために、ファイルをローカルに保存しました。

ファイルを開こうとしましたが、何時間もかかって開かなかったので諦めました。しかし、Excel プロセスが複数起動し、2 番目のプロセスがコンピューターの 16 GB の RAM いっぱいに膨れ上がります (Windows 7、Office 2016、3.2 MHz、クアッド コア、すべて完全に更新済み)。

新しい空のドキュメントを開くことも試しました。ドキュメントは問題なく開きましたが、別の Excel プロセスが Process Explorer に表示され、徐々に大きくなり、使用可能なメモリの 100%、CPU の 0 ~ 1% を消費してしまいました。空のワークブックはほとんど使用できず、キーボード/マウスの入力と反応の間に 6 ~ 10 秒の遅延が発生します。

指示を見ました自動保存/回復をオフにするドキュメント内から実行できますが、ドキュメントが読み込まれない場合は、これを実現するのは不可能と思われます。

私は知っていますスイッチ基本的な excel.exe コマンドに追加できるものもありますが、私が見つけたものには自動回復を無効にするものはありませんでした。自動回復が理論的に自動回復しようとしている tmp ファイルさえ見つかりません。それを削除して損失を最小限に抑えます。

心配なのは、新しいワークブックを開始しようとしただけでもこの現象が発生することです。そのため、「データを新しいワークブックにコピーする」という従来の回避策は、読み込みを完了できず、新しいワークブックを作成できないため、役に立ちません。Excel がこの幻の自動回復プロセスで停止してしまうため、プロジェクトを最初から開始することさえできません (泣)。

それで、長い質問を簡単にすると、Excel の起動時に自動回復 (およびその他の「便利な」機能) をバイパスするにはどうすればよいでしょうか?

答え1

両方の一時ファイルをすべて削除する
Users/username/AppData/**Roaming**/Microsoft/Excel
と、
Users/username/AppData/**Local**/Microsoft/Excel
コメントに記載されているように、/s フラグを除いて、Excel を起動しようとするたびにこの破損したファイルを自動的に回復しようとして Excel がクラッシュする問題が解決されたようです。

その他のニュースとしては、サーバー上のシャドウ コピーが最高です。5 日分の作業ではなく、2 日分の作業しか失われないバージョンを見つけることができました。:D これでよし!

答え2

追加の回答/観察: テーブルにデータ行を少しずつ追加し始めました (文字通り 2 行、次に 20 行、次に 200 行、次に 1,000 行)。すべてが順調に進んでいるように見えました... 一度に数千行を追加し始めました。処理に数秒かかりましたが、問題はありませんでした。Process Explorer がまだ開いていることに気付き、テーブルに行が追加されるたびにメモリ使用量が急増しているのを確認しました。数千行を削除すると、メモリはすぐに元に戻りました。

そのため、Excel テーブルは (通常のスプレッドシートと比較して) かなり多くの RAM を、かなり直線的に消費するようです。テーブルに 1,000 行ほど入れて、必要な解析/修正/編集をすべて行い、値を別のシートにコピーして、テーブルから削除しました。

考えられるもう 1 つのポイント: 少なくとも 2 つの数式は、重複している可能性のある列の値を比較し、次の列に 1 回だけ出力します。つまり、常に列内のすべての値をスキャンすることになります。これは、値を連結したり、フォーマット方法に基づいてデータを変更する数式 (123abc456 と abc456 と 123abc456.78 など) と比較すると、非常に大きなオーバーヘッドを生み出す可能性があるように思われます。これらは、列全体をスキャンするのではなく、行全体で機能します。

関連情報