エクセルファイルがやたらでかい原因の一つ---空白セルの書式か

対策

実務を考慮して対策を先に述べておく。

当該のシートを別のファイルのシートにコピーする。その際、シート全体を選択してコピーしてもよいが、貼り付ける(ペーストする)際には[Alt][E], [S] またはマウスで操作して「形式を選択して貼り付け」を選び、「空白セルを無視する」にチェックを入れる。


これで小さくならなければ、空白セルの書式がファイルの重さの原因ということではない、ということである。
上に強調しておいたように、貼り付ける先は別のファイルが良いようである。実験してみたところ、Sheet1にのみデータや書式設定があり、これを同じファイルのSheet2にコピーして、Sheet1を削除してもファイルの大きさは小さくならない場合があった。小さくなった場合もあった。その違いはまだ私にはわかっていない。単に、エクスプローラーの表示のキャッシュが残っていて、更新できていないものを見ただけかもしれない。
判明したらまた書き直すことにする。

原因は広大な空白セルの書式

何がデータも少ないファイルを重くする原因なのか、シートを一つコピーするだけで重いファイルになってしまう。そこで、貼り付け(ペースト)の仕方を、「データのみ」「書式のみ」「数式のみ」等々に限定切り分けし、何に重い要素があるのか、調べてみた。


なお、同じデータはテキストファイルで入手可能である。DOSプロンプトでファイルの置いてあるディレクトリ(フォルダ---ここでは「 c:\onkirikiri 」としておく)に行き(行かなくても可能だが)

dir コピー*.* > dir.txt

と入力すれば以下のテキストファイル dir.txt が得られ、メモ帳で閲覧できる。文字列 N はマスキングであって、実際の動作環境ではない。

ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は NNN-1N5N です

C:\onkirikiri のディレクト

201N/NN/2N 09:48 8,534 コピーコメントのみ.xlsx
201N/NN/2N 09:46 10,534 コピーデータのみ.xlsx
201N/NN/2N 09:51 10,304 コピー値と数値の書式.xlsx
201N/NN/2N 09:49 8,650 コピー入力規則のみ.xlsx
201N/NN/2N 09:50 10,742 コピー数式と数値の書式.xlsx
201N/NN/2N 09:47 10,628 コピー数式のみ.xlsx
201N/NN/2N 09:45 17,024,975 コピー書式のみ.xlsx
201N/NN/2N 09:51 9,763 コピー書式のみ空白セル無視.xlsx
8 個のファイル 17,094,130 バイト
0 個のディレクトリ 4NN,6NN バイトの空き領域

この通り、空白も含む書式に秘密が隠されている、ということがわかった。
この書式のみコピーされたファイルを調べたところ、以下のようであった。

  • 条件付き書式は設定されていなかった。
  • 表示形式は標準であった。
  • 配置は横位置は標準であったが、縦位置は中央揃えであった。[A1]から一番遠いセル[XFD1048576]もそうであった。
  • フォントはMS P ゴシックでデフォルトであった。(書式のみコピーなのでデータはなし。)
  • 罫線は[A1]から[M24]までの表だけであった。
  • 塗りつぶしはなかった(色なしに設定されていて、白での塗りつぶしではない)
  • 保護はロック状態(プロテクトはかけていないので意味はないと思う)

新規のブックを作成したところ、セル書式の「配置」の「縦位置」が「中央揃え」なのはデフォルトであった。
この「書式のみコピー.xlsx」の[A26]にカーソルを置き、[Shift]+[End]キーで選択して26行目以下を削除してみたところ、11kbにまで小さくなった。消し方としては、「行全体」ではなく、罫線のある A から M までの部分で「上方向にシフト」でも小さくなった。
しかし! 「左方向にシフト」で削除すると 34kb に大きくなった。また別のシートや別のブックの空白セルをコピーしても同じ大きさに膨張してしまった。


もともと、[A1]から[M30]くらいの条件付書式のある表を、コピーで下のほうへ際限なく伸ばし、さらに表の下の部分(データが空白)を上部にコピーしてデータを「消去」していたものが、条件付き書式が何層にも重なってしまったことが「重さ」の原因であったが、条件付き書式を消去しても、あまりに長く下の方に表を伸ばしたことが、何らかのデータとなって残っていたので、重くなったものと考えられた。
また、これを消去するにあたって、消し方によっては軽くなるどころか、重くなることもわかった。
意図的に作った重い他のファイルで実験したところ、消し方による軽量化に差はなかったので、どのようなファイルにも共通する法則ということではないようだ。


結論としてどうすればよいのかは、冒頭に述べておいた。