突然ですが、リスティングのエクスポートCSVファイルをExcelで開いたときに、以下のようなことが起こったという経験はありませんか?
- 「001」と書いてあるはずのセルが「1」になっていた
- 「+キーワード」(絞り込み部分一致のキーワード)と書いてあるはずのセルが「#NAME?」となっていた
今日はこのような現象が発生する原因とその回避策について説明します。
そもそもCSVファイルって何?
そもそも、CSVファイルはExcel専用のファイル形式ではありません。メモ帳で作成したTXTファイルと同じ、ただのテキストファイルです。
CSVとは「Comma Separated Values」の略で、「ただのテキストデータだけど、複数の値をコンマで区切ることによってデータを整理した状態で保存しておけるファイル形式」です。
ExcelがインストールされているPCでは、CSVファイルを普通にダブルクリックするとExcelで開くようになっているので、多くの方が勘違いしてしまっていますが、本来、CSVファイルとExcelは何の関係もないのです。
ExcelでCSVファイルを開くと、Excelが気を利かせて色々加工してくれる
ここで一度CSVから離れて、Excelというアプリの機能について考えてみましょう。
例えば、普通にExcelを開いて適当なセルに「001」と入力してEnterキーを押してみてください。「001」と打ったのに、実際にセルに入力された値は「1」になっていますよね?
これは、Excelというアプリが『「001」ってことは、常識的に考えて数値の「1」のことですね(キリッ』と気を利かせて、入力されたデータを勝手に加工してくれたわけです。
これと同じことが、CSVファイルをExcelで開いたときにも起こります。
CSVファイルの中に「001」という値があった場合、Excelで開くと、該当するセルには「001」ではなく「1」と表示されます。
Excelで保存すると加工後のデータで上書きされてしまう
ここまでなら、まだ元のCSVファイルのデータ自体は無事です。つまり、
CSVファイルに実際に書かれている値は「001」だけど、Excelが画面に表示する際に「1」と表示しているだけ
という状態ですね。
しかしこの状態でExcel上で「上書き保存」を実行してしまうと、話は変わってきます。
いまExcelでセルに入力されている「1」という値が、元々「001」となっていたデータを上書きしてしまうのです。
「001」が「1」になるというのはExcelが行う加工の単なる一例であって、これ以外にも色々なパターンの加工が考えられます。
冒頭に書いた「+キーワード」が「#NAME?」になるというのも同じ現象です。
この場合、値の先頭が「+」という文字から始まっているために、Excelが『なるほど、これは数式ですね(キリッ』と勝手に気を利かせて、先頭に「=」を付加して「=+キーワード」という値に変えてしまうのです。
しかし「=+キーワード」という数式は正しい数式ではないので、エラーとなって「#NAME?」と表示されていたわけです。
勝手に加工しないようにCSVをExcelで開く方法
長くなってしまいましたが、CSVファイルをExcelで編集することの怖さが分かっていただけたでしょうか。
それでは、ここからは対策編です。CSVファイルを、勝手に加工されないようにExcelで開いて編集する方法をお伝えしましょう。
テストデータ
まず、実験用にメモ帳で「001」と「+キーワード」だけの内容のCSVファイルを作成しました。
これを普通にExcelで開くと、このように表示されます。
見事に加工されてしまっていますね。
テキストデータのインポート
では、今度は別の方法でこのCSVファイルをExcelで開きます。その方法とは、「テキストデータのインポート」と呼ばれる方法です。
やり方は以下のとおりです。
まず、メニューバーの「データ」を選択し、「外部データの取り込み」と書かれたエリアにある「テキストファイル」をクリックしてください。
すると、ファイル選択ダイアログが表示されますので、読み込みたいCSVファイルを選択してください。
ファイルを選択すると、インポートに必要ないくつかの設定が求められます。
まず最初の画面では、下記の赤枠の箇所が、「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」が選択されていることを確認して、「次へ」をクリックしてください。
次の画面では、下記の赤枠の箇所で、「タブ」のチェックを外して「カンマ」にチェックを付けてください。変更したら「次へ」をクリックしてください。
次の画面では、まず下部にある「データのプレビュー」という箇所で、全ての列を選択(Shiftキーを押しながらクリックしていくと、複数の列が選択できます)してから、上部の「列のデータ形式」を「G/標準」から「文字列」に変更します。変更したら「完了」をクリックしてください。
最後に、インポートしたデータをどのセルを起点として貼り付けるかを選択できますので、必要に応じてA1セルをクリックするなどして変更し、「OK」をクリックしてください。
これでインポート完了です。
このとおり、加工されずに読み込むことが出来ましたね。
まとめ
Excelの機能はCSVファイルの編集をものすごく効率化してくれますので、Excelは最大限に活用すべきです。
しかし、CSVファイルがただのテキストファイルで、Excelは場合によっては余計な悪さをしてデータを壊してしまう可能性もある、というような「本質」を理解していないと、何かあったときに右往左往することしか出来ません。
真のCSV編集マスターになるために、Excelをしっかり理解し、Excelと上手に付き合っていきましょう。
おまけ
ちなみに、Excelで開いて「=+キーワード」となってしまったセルを単純に「+キーワード」に直したいだけなら、実は
キーワードの列をすべて選択して「=」を「」に「すべて置換」する
という方法で解決できる場合がほとんどです。
ExcelでCSVをいじると危ないよという話がしたかったので本編では別の方法を紹介しましたが、本質さえ理解していれば同じ問題を解決するにも色々な対策がとれると思いますので、効率よく作業するためにもとにかくCSVの本質を理解することが大切だと思います。