Excelと文字列

Microsoftのシステム全般に関して言えることだが、奴らは非常にお節介である。
本日はExcelと格闘した結果、残業してしまった。
頭に0がついていたり、ある程度以上の数字をExcelに直接読み込むと、表示がバグる。というか、表示がバグっているだけならセルの書式を文字列に指定してやればいいだけなので問題ないのだけれど、Excelは一旦数値として認識した瞬間に余計な情報は忘れてしまうらしく、頭の0は綺麗さっぱり忘れてくれるし、大きすぎる数字はエラー表示のまま文字列と見なす。


ある日私が手に入れたexcelファイルは、そういう無粋な真似を避けるためなのだろう、全てのセルの末尾にアンダスコアが挿入されていた。これを編集して私は別の人に渡さなければならなかったのだけれど、先輩曰く、喩え社内でもこういうものを人に送るのは大変失礼らしい*1


まず私は安直な方法をとった。シート全体を選択し、セルの書式を「文字列」に指定。それからアンダスコアを空文字列に「すべて置換」。すると信じられないことに、世話焼きなExcelはすべてのセルを数値として再認識したのである。当然表示はバグった。一応、セルを一つずつ指定してアンダスコアを削除することは可能だったが、やりたくない。というか、そんな非効率な作業によって会社の人件費を無駄にしてはならない。
次に私は、オプション指定を試した。空文字列の書式を「文字列」に指定し、置換。すると、表示はバグりこそしなかったものの、アンダスコアが残ったまま。「360個置換しました」って……嘘つき。変換されてないじゃん。


そこで先輩から助言。「一旦CSVに出力してから形式を指定して読み込ませたら?」
エ? ヒラクトキニケイシキヲキカレタコトナンテアリマセンヨ? コノヒトナニイッテルノ?
とは思う物の、普段は投げ込んだりCSVファイルをダブルクリックで直接開いているからかもしれない。ここはMicrosoftの想定する初心者の行動を推理して、メニューから丁寧に開いてやる。普通ならどんな開き方をしたところで、表示形式を聞いてくるべきなのだろうけれど、「ショートカットを知っている上級者にそんな面倒なことを聞いたらうざがられる」とか思っているのに違いない。……等と思いながらやってみたのだけれど、やはり駄目だった。何も訊ねてこない。


この辺で私は一旦読み込みを後回しにすることにして、先にテキスト出力してアンダスコアの除去を行うことにした。……って、なんでコンマ区切りのテキスト出力が無いの? 仕方がないのでTab区切りのテキスト出力で我慢する。
そしてアンダスコアを除去し、Tabをコンマに置換し、拡張子をCSVに変えて編集終了。さて、再びExcelに変換しよう。


そしてGoogle先生に泣きつくこと30分。とあるサイトの解説を見て漸く気付く。Excelに読み込ませる時に形式を聞いてくるのは拡張子がtxtの時らしいのだ。まさに驚愕である。初心者は拡張子なんてむしろ表示すらさせてないってのに!*2


そして形式を指定しつつ、さらに苛立つ。なぜか区切り文字のデフォルトが「Tab」になっているのだ。毎回コンマを指定させずに記憶してくれれば良い物を。さらに「すべて文字列と見なす」って項目がないため、全ての列に対して「文字列」のラジオボタンを幼ければならず、かなり面倒だった。……てか、わざわざ区切り文字をコンマに変えた意味無かったよorz。

*1:曖昧な日本語で事務連絡をするのに比べれば些細な問題だと思うけれど……。

*2:というか、むしろCSVを知らないから丁度良いのか?