アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルファイルが5メガのデータ容量となり、数字を入力するたびに数十秒待たされます。
データはエクセル関数を使った売値とか仕入れ値とかの計算表です。

何故か、商品数が何十倍もある別のファイルの方が軽快に動きますし、軽いです。
2007バージョン、ファイル形式はxlsxです。

軽量化するのに効果がある方法ないでしょうか?
よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    難しい計算式は使ってません。例えば、縦列に=SUM(A1:A10)とか 
    横列ごとに=I10*$J$1とか=K5-J5-K5*0.1-M5とか混合して使ってます。

    あと、空白をクリックしたり、列幅を触っただけで数十秒待たされます。

    形式は既に書いてますが、2007バージョン、ファイル形式はxlsxです。

      補足日時:2017/04/21 16:01
  • うれしい

    みなさんアドバイスありがとうございます!分かる範囲でやりました。
    横列をコピーして新規シートにペーストしていき、元のシートを削除しました。これでだいたいの列が今までの読み込み時間が半分以下になり軽快になりました。しかし、一部分の列だけが数字を入力後、2分も読み込みするなど遅い部分もありました。ここまでは、おおよそ軽快になるも何故かファイルが7MBと増えました。
    そこで保存ファイル形式を一旦、No7さんの言う通り古い形式で保存してから開き、通常で保存すれば2MBまでおとせて、2分読み込みしていた箇所も数秒まで抑えることができました。 
    結局、原因がいまいちわからないのですが。。 編集を繰り返すと余計なデータが残っていくでいいんでしょうか??

      補足日時:2017/04/21 19:41

A 回答 (8件)

あー編集を繰り返すとゴミが溜まるのかそんなことありますね。



そのファイルから新ファイルに
シート1枚ずつ全コピーしたらゴミを取り除けたりします。
確実な保証は私にはできませんが。

うまくいったら旧ファイルは削除してOK。
    • good
    • 1

誰かから貰ったものをベースに使い回していると重くなる。


原因はシェイプの増殖。図形の事です。
目に見えないちいさな図形が1個でも最初に有ったら、セルや列・行のコピーで図形も一緒にコピーされる。
セルや列・行を削除しても図形は削除されない。

これが繰り返され、どんどん増殖し、どんどん重くなります。

VBAでシェイプを全削除して下さい。
    • good
    • 0

「5メガのデータ容量」のために「数十秒待たされ」るわけではないことは、既にお分かりですね。

貴方も「何故か、商品数が何十倍もある別のファイルの方が軽い」と経験済み。
「商品数が何十倍もある」ファイルは殆どがテキストデータのみ。
「数十秒待たされ」ファイルは数式だらけなので、「数字を入力するたびに」ワークシートが再計算を実行するからです。

手っ取り早いのは、[ファイル]→[オプション]→[数式]→[計算方法の設定 <ブックの計算>]で"自動"に付いている黒目玉を"手動"に付け替えることです。
こうしておけば入力はサクサクになります。再計算させたいときにF9キーを「エイヤッ!」と叩き付けてトイレにでも行けば好い。
以上の手順は Excel 2013 のものです。貴方も質問するときはバージョン明記忘れずに、これ常識です。
    • good
    • 2

こんにちは。



目に見えて分かるようにするには、大手術が必要になると思います。

マイクロソフトの注意書きをまとめて見ようと思いました。

"列全体" ルール [100万]以上の限界
配列数式は全列の参照を処理できますが、列のすべてのセル (空白セルを含む) が計算されるため、計算が遅くなることがあり、特に行数が 100 万を超えると、計算速度は低下します。


次に、揮発性関数を探さなくてはなりません。

RAND()、NOW()、TODAY() 、OFFSET()、CELL()、INDIRECT()、INFO
揮発性関数です。これらが使われた関数は、値を確保しませんので、開くその都度、計算します。

以前は揮発性関数として記載されていたが、今はそうでないものに、
INDEX()、ROWS()、COLUMNS()、AREAS() があります。

INDIRECT や OFFSET などの揮発性関数は極力使用しないでください。
配列数式や関数で使用する範囲のサイズに、列全体(A:A) は書かないこと。
配列数式やネストが複雑な関数式は、補助列を作って、セル一点に計算がかからないようにしてください。

INDEX()は、揮発性関数ではありませんが、数式で範囲や領域を決めてしてしまうと、揮発性と同じ結果になってしまいます。

VLOOKUPの参照範囲は、ソートされた領域を使用してください。

詳しくは以下をお読みください。

https://msdn.microsoft.com/ja-jp/library/office/ …
https://msdn.microsoft.com/ja-jp/library/office/ …
https://support.microsoft.com/ja-jp/help/166342/ …
    • good
    • 3

自分が一番思った事があるのは、SUMPRODUCTですね(配列計算)


列全体としていなくても、条件式を多数組み込めば重くなります。
1つのセルでまとめて計算しようとしているものを、
作業ようのセルやシートを用いて分散させたり、
1つの式に条件分岐等で多数回利用する計算式を別のセルで計算させておく、
といった事で改善される事もあります。
具体的なものが分からないので推測…ともいえない可能性の1つではありますが。
    • good
    • 0

原因切り分けたら?


No.3様の言う様に、自動計算をオフにして手動計算にして、症状が変わるかどうかを先ず確認する。

それでも駄目なら「・・・・」を行なっても駄目だった、と補足する。

そうやって絞り込んで行かないと解決しないでしょ?
貴方のエクセルブック・シート、誰も直接見る事出来ないんだから・・・。
    • good
    • 1

セルの使用範囲にもよりますが、


1. Excel 97-2003 形式で保存し、Excelを終了する。
2. 保存したものを開く
3. 通常のブック形式で保存する
と早くなるかも。

その場合、余計な行や列を計算対象にしていることがあるので
すべてのシートで使用していない行や列を削除して保存します
その後、Excelを再起動させ、開き直します
    • good
    • 1

No.1です。



エクセルで何かのマクロ使ってるとき、
開いてるファイルを保存する時に「このファイルにもそのマクロを一緒に保存する」みたいな
指定があった気がする。
これすると必要でもないマクロでも一緒に保存し、無意味なのにファイルサイズ増えたり
動作重くなったり...した気がします。古い記憶で曖昧ですみません

そういうのも含めて
質問文補足>横列をコピーして新規シートにペーストしていき、元のシートを削除しました。
のように同じファイル内でシートコピーするよりも、
新規ファイルにコピペする方が余計な情報をより多くカットできると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!