読者です 読者をやめる 読者になる 読者になる

#untitled note

私的な考えとかメモ、その他トラブルシュート

オートフィルター絞込時、行・列のサイズ変更時に待ち時間を短くする地味に便利なTips

意外と知られていないのか、意識していない人が多いようなので書いて見ます。

Excel表計算ソフトのくせに、大きな表を作ると、
オートフィルター時にやたら時間がかかったり
行・列の高さ・幅を調整するときにやたら時間を取られて
挙句の果てに「応答なし」になる時がありますよね?ハイ、あります。

実はコレ、ほとんどセルサイズの再描画にかかる時間のようです。

解決策

データの入っている全てのセルを指定して、「折り返して全体を表示」を解除してください。

本当にセル全部を選択すると、全然関係ない大量の空白行にまで処理を行うので、解除自体の処理が遅くなってしまうので、データが入っている行か列を選択してください。

例えば、1〜10000行目までデータが入ってたとすれば、
1〜10000行目だけを行選択してください。*1


詳細手順その1
簡単な方法です。
  1. 上記の方法でセルを選択
  2. 右クリックして[セルの書式設定]から[配置]タブを選択。
  3. [折り返して全体を表示する]のチェックを外してOKを押す。
この方法だと、確かほぼ一瞬で折り返し表示が解除されて各セルの内容が1行で表示されたと思います。
折り返し表示設定が設定されているセルと、されていないセルが大量に入り乱れている場合
たまに解除自体に時間がかかったりしますが、それでも「応答無し」になるレベルではないのでマシです。


詳細手順その2
私はいつもこちらの方法で解除しています。
理由は、右クリック→[セルの書式設定]を呼び出す事自体に時間がかかるためです。
  1. 上記の方法でセルを選択
  2. リボンメニューまたはツールバーから[折り返して全体を表示する]設定ボタンを押す。
  3. 処理に時間がかかるようなら、ESCキーを押して処理を中止。*2
  4. 再度[折り返して全体を表示する]ボタンを押す。
  5. 処理が一瞬で終われば、セルが解除されている。終わらなければ2つ前の手順(ESCキー押し)に戻る。
です。

何をしているのかというと、Excelが「今どういう処理をしようとしているか」を無視して、セルが解除されるまで[折り返して全体を表示する]を押しているだけです。
折り返し設定処理と、折り返し解除処理なら、解除処理のほうが断然早いので、処理が早く終われば折り返しが解除されたものとみなし、時間がかかってるなら設定しようとしているものと見なしてESCで処理をキャンセルしているというわけです

それでも、場合によってはどうしても解除に時間がかかるパターンもあるので、その場合は大人しく待ちます。*3

こういう時に使える

データの閲覧目的のみや、個人的にしか使わない(見た目を気にしない)時などに非常に便利です。

勘の良い人はお気づきかも知れませんが、画像やオブジェクトが無い、数式もガチガチに使っているわけではない純粋な表形式のExcelファイルなのに、ファイルを開くのが遅い場合は、折り返し表示が有効になっているために行・列のサイズ変更と、その再描画で遅くなっている事が殆どです。

実際に、折り返し表示ONとOFFのファイルで開く速度を比較すると、驚くほど違います。
特にピボットテーブルの元データとして莫大な量のデータを扱う場合には必ず折り返し表示は解除することをおすすめします。(ピボットを見るのでデータ側を見る必要ありませんし)

個人的によく使うシーン

僕個人でよく使うのは、CSVデータを開いた時と、そのデータを自分用の加工/編集データとして持っておきたい時によく使います。

CSVデータは書式の概念が無いので、ありがた迷惑なExcelの仕様上デフォルトで全て折り返し表示が掛かっています。
このためファイルを開くときにやたらと待たされます。コレはもうどうしようもありません。
そして開いた後、そのまま行の高さを見やすくしようとしたり、オートフィルターをそのままかけようとすると、かなり待たされてイライラする事になります。

なので、開いたらまず全データの折り返し表示を解除してからやることで、処理が快適になります。
また個人的な編集データとして保存しておく場合は、見た目なんてどうでもいいので、絶対に折り返し表示をONにせずにxls(x)で保存するようにしています。

CSVデータを最初に開く時だけ時間がかかるのは我慢して、次から開く時には折り返し表示の解除された軽快なxls(x)を使いましょうということです。

*1:別に65536行目や1048576行目まで選択したって構いませんがやっぱり遅いです

*2:折り返し表示が設定されていないセルに対して、折り返し表示を設定しようとしているのを中止している

*3:あまり遭遇したことないですが