遅いExcelスプレッドシートを診断しますか?


13

クライアントが私に連絡し、Excelのスプレッドシートを開くのに時間がかかりすぎると不満を言った。彼らはExcelを使用して請求書を作成しているため、簡単な書式設定と非常に簡単な計算を備えた数百のExcelスプレッドシートがあります。スプレッドシートをサイズで並べ替えると、ほとんどのスプレッドシートは10〜250kの範囲でしたが、ファイルサイズが2〜3 MB以上のスプレッドシートがいくつかあることがわかりました。奇妙なことに、ファイルサイズはそれほど大きくなく、多くのデータ、わずかなフォーマット、わずか2〜3ページの印刷された請求書を保持していません。 。

ファイルを開くと、必要なRAMの量が3 MBから400 MBに急増し、起動時にシングルコア(オフィスのデュアルコアと私のクアッドコアラップトップでテスト)を完全に占有します。彼らは何らかの形でVBAコードをキャッチしたと思っていましたが、マクロもVBAコードもありません。Ctrl + Endは39行と約12列を表示します(Mで終了)。データがなくなるまで、行ごと、または列ごとにデータを削除しましたが、それでも同じ問題が発生します。

私はたくさんのGoogle検索をレビューしましたが、どこにも行きませんでした。誰でも助けを提供できますか?


別の興味深い注意:xlsxファイルをExcel 2007でxlsファイルとして保存することはできませんが、Google Docsにインポートしてからxlsファイルとして保存すると、通常のサイズのファイルが再度取得されます。
サイモンホバ

回答:


7

私は私の問題の答えを見つけました!

allquixoticから与えられた手がかりを使用して、xlsxファイルを7-Zipで開き、ファイルサイズを比較しました。他のファイルよりもはるかに大きいファイルが1つありました。ファイルxl \ drawings \ drawing1.xmlは、フォーマットへの複数の参照を繰り返し含むファイルでした。

パターンを理解しようとして数時間費やしましたが、できませんでした。私ができることは何も機能しませんでした!その後、悪化の一途をたどった後、いまいましいファイルを削除して、Excelで再度開くことを試みました(2010年-Excel 2007ではテストしませんでした)。

ファイルが破損していると不平を言い、修理を試みたいかどうか尋ねました。ファイルを修復すると、形状が単純に消去されますが、ファイルのフォーマットはまったく変更されませんでした。ファイルを同じファイルとして保存する必要がありましたが、少し奇妙ですが、うまくいきました!

前述したように、このソリューションはExcel 2010以外の製品ではテストしていなかったため、Excel 2k7またはOpenOffice製品にとってシェイプファイルが重要かどうかはわかりません。ただし、同様の問題がある場合は、これが役立つことを願っています。


同じ問題のあるファイルに遭遇しました。drawing1.xmlを削除する代わりに、sheet1.xmlから図面への参照を削除し、「名前を付けて保存」しました。考えられる原因は、メール、インターネット、またはその他のスプレッドシートからデータまたはフォーマットされた文字列をコピーしている可能性があります。
アンドレイ

1
同様の状況が発生しました。私の場合、いくつかのdrawingN.xmlがあり、サイズは「許容される」200 KBから80 MBの範囲です。このファイルは、16GBのRAMを搭載したクアッドコアデスクトップでさえひざまずきます。すべてのdrawingN.xmlを削除すると(Excelファイルにはグラフやグラフィックが含まれないため)、問題は解決し、この記事の執筆時点で最新のOffice 365で動作します。
マーシーンカヤパウロ

6

バイナリ.xls形式または新しいXMLベースの.xlsx形式を使用していますか?一般に、.xlsx形式では、ファイルサイズが大幅に削減されます。

ドキュメントに保存されているスタイルの数が多すぎるなどのことを確認します。

「個人情報を削除する」(Excel / Wordなどの機能)を試して、ファイル内にある可能性のある特定の種類の不要なファイルをクリーンアップしてください。

スプレッドシートが共有されている場合、または以前に共有された場合は、古い共有データが保存されている可能性があります。

簡単な修正方法の1つは、関連するデータのみをそのスプレッドシートから新しいスプレッドシートにコピーして貼り付け、.xlsx形式で保存して、そのサイズがどれだけ小さいかを確認することです。非常に小さい場合は、答えがあります。Excelは、内部ファイル形式のデータ構造の不十分なアカウンティングを行っています。

また、複雑な式または循環式および外部シートへの参照(特にネットワークドライブ上のもの)を確認します。数式が遅いと思われる場合は、数式監査ツールを使用してステップスルーできます。

最後に、.xlsxとして保存してもまだ大きい場合は、OpenXML SDK Productivityツールをダウンロードしてみてください:http : //www.microsoft.com/en-us/download/details.aspx? id=5124

その中で.xlsxを開き、ファイル内のすべての要素を調べて、明らかに無関係なものがないかどうかを確認します。これには、XMLおよび特定のOpenXMLスキーマの知識が必要な場合がありますが、膨張の原因を突き止める確実な方法です。

PS-この種のものがあなたを困らせるなら、マイクロソフトのフォーマット/プログラムの使用をやめるか、そうするよう顧客に提案してください。「Microsoft Accessデータベースの肥大化」をグーグルで検索すると、Microsoftが独自のフォーマットでクリーンアップされない大量の無用なデータをディスクに漏らす長い歴史があることがわかります。RAMの代わりにディスクを食う、本当に厄介なメモリリークのようなものです。


スプレッドシートは確かにxlsxであり、奇妙なことです。.xlsファイルとして保存できません。Excel 2k7でエラーを返し続けます。コピーを2003 xmlスプレッドシートとして保存しましたが、奇妙なことに、膨大な数のスタイルがリストされていました。スプレッドシート全体が同じフォントを使用し、特別なフォーマットを使用していないため、これは奇妙です。クライアントに何を伝えるべきかまだわかりません。
サイモンホバ

2

別の可能な解決策は次のとおりです。

  1. 問題のあるExcelファイルのコピーを作成します
  2. そのコピーを開く
  3. Ctrl + Aキーを押して、[クリア]-> [フォーマットのクリア]をクリックします。
  4. すべてのワークシートで手順3を繰り返します
  5. ファイルを保存して、再度開きます

書式設定が多すぎる場合、特に多くの個別のセルに多くの異なるスタイルが適用されている場合、Excelはファイルを開くときに書式設定を適用しようと本当に苦労します。

当然、すべての書式設定を削除すると、境界線、網掛けなどがなくなったすべてのセルでデフォルトのスタイルが適用されたテキストだけになります。ただし、この方法で問題の原因を特定できます。


0

サイズを劇的に縮小するには、.xlsb形式を試してください。Excelが提供する他のXMLベースのフォーマットよりも多くを削減する必要があります。

これらのスプレッドシートのいずれかを開き、フォーマットを見てください。通常のものを探します。列全体を別のExcelスプレッドシートにコピーし、値のみを貼り付けてください(書式設定は一切行いません)。それが役立つかどうかを確認してください。


xlsbで保存してみました。サイズはまったく縮小されません。スクリーンショット
サイモンホバ

@Simon Hova計算を手動に設定し、Excelを再起動しようとしましたか?数式、書式設定など、何でもかまいません。データ列を別のExcelスプレッドシートにコピーして、パフォーマンスが同じかどうかを確認しましたか?データのみ。数式やフォーマットはありません。一度に1つずつ追加して、問題がどこにあるかを確認します。
-TwirlMandarin

それは別の奇妙なことだが、そこではありません何の計算は、実行中の一切の式はありません。いくつかのマイナーな書式設定を備えたほんの数行と列です。行ごとにデータを削除しようとしましたが、以前とほぼ同じサイズのファイルが残っています。まだ困惑しています。
サイモンホバ

0

私の場合、問題は「表形式」に関連していました。テーブルには16000の空の列がありました。これは、この種の問題の最も頻繁な理由の1つだと思います。


0

ワークシート全体ですべての条件付き書式ルールを確認しましたが、負荷がありました。私はそれらをすべてクリアしてから、実際に必要なものを作成しましたが、今では非常に高速です。また、私が必要としなかったすべての「接続」を取り除き、すべてがうまく機能した後に.xlsbとして保存し、今ではさらに高速です:o)


これは他の回答の情報を複製するため、「ありがとう」のコメントのように感じます。
ベルティエブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.