いつも業務で使用しているエクセルファイル(Excel2013)の挙動が急に重くなった。
このままでも特に支障はないが、なんだか気持ち悪いので業務の合間を縫い、数日かけて原因を探っていたのだ。
そしてついにエクセルが重くなった原因を突き止めてやったぜ!
それに絡んでいた意外な要因も。
ちなみに最初にウイルスチェック(完全スキャン)をかけて、パソコン自体に問題がないことは確認済みである。
目次
エクセル、応答なし!
業務で使用しているエクセルのファイルを起動するとき、読み込みに時間がかかるようになった。
しかも特定のセルをコピーペーストしようとすると、応答なしになってしまうのだ。
そして応答なしからの、エクセルの再起動となる現象。
重くなったのはそのエクセルファイルだけで、他のファイルはそうでもない。
ということは応答なしになってしまう該当のエクセルファイルだけの問題の可能性が高い。
エクセルが重くなった原因を探ってみる
セルのコピーペーストは行ごと選択で50行から100行くらいの範囲。
何年もこのファイルを使っているが、こんなことは初めてだ。
原因を突き止めるため、ひとつずつ怪しいところをチェックしてみた。
タスクマネージャーでメモリ使用量をチェック
タスクバーを右クリック→タスクマネージャーをクリック。
”パフォーマンス”タブで、該当エクセルファイルを開いているときのメモリ使用量を確認。
メモリ使用量はまだ余裕あるので、パソコン自体の問題ではなさそう。
他のエクセルファイルの挙動を確認
一応、他のエクセルファイルで再現性があるか試す。
エクセル自体の不具合ならば、エクセル自体の修復が必要だから。
2~3個の別ファイルを試したが、コピーペーストで応答なしにはならなかった。
やはり該当ファイル単体に原因があるようだ。
隠れたオブジェクトがないかを見てみる
- 手順1ジャンプ選択Ctrl+Gを押し、ジャンプ選択を呼び出す。
- 手順2セル選択ジャンプと書かれている窓の下部にあるセル選択をクリック。
- 手順3オブジェクトを選択選択オプションの中のオブジェクトにチェックを入れOKをクリック。
- 完了隠れたオブジェクトがあった場合、その隠れたオブジェクトが全選択された状態になる。
はい、何にも選択されませんでした。
自分しか使っていないエクセルファイルだし、該当ファイルはグラフやオブジェクトを使用していないものだから当然の結果といえば当然なのだが。
もし、意図せずコピーペーストしたオートシェイプの残骸が残っていたりすると、この操作をすることによってオブジェクトが全選択される。
選択されたオブジェクトをDeleteキーを一発押すだけで簡単に一掃できる。
関数やマクロをほとんど使用していないのにエクセルファイルが異常に重い(10MB近くある)場合はオブジェクトを疑ってみるといいだろう。
数年前「エクセルがおかしいから見てくれ」と言われ、上司のパソコンでこれを実行したことがある。
遥か印刷範囲外に1万個以上のオブジェクト(細い直線のオートシェイプで、目視では見えない)を発見し、吹き出しそうになったことがある。
ちなみにその時はエクセルなのに20MBもあるファイルだった。
関数や数式を使いすぎていないか
関数や数式を多く使用していると、当然処理する箇所が増えるわけだから重くなる。
良い機会なので、バックアップを取る。
バックアップと言っても、ファイルごとコピーし名前を変えて保存しておくだけである。
バックアップ後、惰性で残しておいたが今後使用しないと思われる数式が入った列を数行削ってみた。
上書き保存後、改めてコピーペースト。
やっぱり応答なしになる……なぜだ!?
今回の真犯人は条件付き書式だった!
エクセルファイルが重いときに、会社で良くやる対処法を試したのだが症状が改善しない。
試しに問題なく動く過去のバックアップと現在の状態のものを参照して比較してみたら、すぐに以下の仮定が頭に浮かんだ。
条件付き書式が怪しすぎる。
現時点のファイルをバックアップしてから、条件付き書式をすべて解除してみる。
上書き保存して閉じた後、該当のエクセルファイルを開いてみる。
……あ、軽くなった!
これは期待できると、すかさずコピーペースト。
……成功。
今回の真犯人は条件付き書式だったか。
実は比較した瞬間に、条件付き書式が原因ではないかと感じたのには理由がある。
この該当エクセルファイル、従業員データを取り扱っているもの。
そして条件付き書式が設定されていた列が取り扱っていたデータは年齢だ。
59歳までは通常書式なのだが、60歳以上になると段階的に書式が設定されているのだ。
つまり、数年前のバックアップと比較して圧倒的にシニアが増えていたのである。
色とりどりの年齢データの列、わかりやすすぎた。
元気なシニア従業員がこんなにも増えていたとは意外だった。
まとめ
エクセルが重いときにまず確認することは2つ。
・エクセル自体に問題があるか
上記の結果ファイルの問題の可能性が高ければ、次のことを確認。
・関数や数式を使いすぎていないか。
・条件付き書式を使いすぎていないか。
今回はマクロ付きのファイルではなかったので試さなかったが、マクロのチェックが原因の場合も。
また、セルの背景を塗りつぶしている箇所を減らしてみるなども試す価値はある。
2017/11/14追記
更にエクセルが応答なしになってしまう現象が出たので紹介する。
エクセルのある部分のセルが何らかの原因で壊れていることがある。
おそらくコピーペーストを何度も行った結果、セルが壊れたのだろう。
そんな時は、コピーペーストが正常にできるセルをコピーし、シート全体に「書式のみ」で貼り付けをおこなうとあら不思議。
上記対応をすべてチェックしても症状が改善されなかった時は、是非お試しあれ。
しかし、今回のエクセルが重くなった原因に従業員の高齢化も絡んでいたとは興味深い。
徐々に60歳以上の従業員が増えていくにつれ、条件付き書式によってデータが肥大化し、ファイルの応答なしを引き起こしていたとは。
他にも同様のエクセルファイルがあるから、元ファイルの条件付き書式は設定せず、加工したファイルだけにしておこうっと。
ひとつ勉強になった。
今回はここまで。
最後までお読みいただきありがとうございました。
私も条件付き書式を使ったファイルで応答なしになって、ずっと解決法を探していました。
やっとこちらの記事にたどり着いて、条件付き書式が原因であることに確信が持てました。
今のところCPUを上位にすればこの現象が起きないことは確認していますが、会社のPCなので安易に新しくしてもらうわけにもいかず、そのままです。
ただ、このファイルは使いやすくする為に作ったものなので、条件付き書式は残したいと思っています。
こちらの記事を載せていただき、ありがとうございました。
山田さん、コメントありがとうございます。
私の記事がお役に立てたようでうれしく思います。
条件付書式は直感的ですごく便利な機能ですが、関数と並んでリソースをものすごく使いますよね。
条件付書式でもう一つ症状がありまして、シートをコピーして使用していくと条件付書式が機能しなくなることがあります。
そういう時は、古いシートを分割したり、削除することによって症状が改善いたします。
ファイルをそのままにされているとのことですので、できるのであれば取り扱う範囲を狭めたり、別ファイルにバックアップにして負荷を減らすなどしていただければ多少なり改善できるかと思います。
リンさん、この度は本当にありがとうございました。
この記事のおかげで進まなかった仕事が片付きました。
本当に助かったので、この思いを伝えたくコメントします。