2008/04/21

Excelでのcsvファイルの取り扱い方~0落ち/日付変換対策

データのやりとりはcsv形式(カンマ区切り)、という方が多いと思います。csvファイルをダブルクリックすると、Excelと関連づけられていて、Excelが起動するマシンがほとんどですよね。ここにワナがあります。csvファイルをExcelで開くと、データが壊れる可能性がある、ということを皆様ご存知でしょうか?

壊れる可能性のあるデータの代表格は、

  • ゼロつき数字のセル(「00001」など、ゼロからはじまるもの。Excelで開くと、数字型として認識されて0が消えてしまう)
  • 「2-2-3」など、数字とハイフォンやスラッシュのみで構成されているセル(「住所の番地のみ」のセルなどで、数字とハイフォンだけ、などだと、日付形式として認識され、番地が日付に解釈されてしまう)
  • カッコで囲まれた数字のみのセルはマイナスになってしまう(「(5000)」は「-5000」に)。

値をみてExcelが勝手にデータを、数字型だの日付型だのに解釈してしまって、データが壊れてしまうわけなのです。もらったそのままのデータの中身をみるだけなら、セルの表示書式は「文字列」でなければならないのです(ただし、文字列の書式だと、計算などはできなくなります。あくまでも「文字列」で数字ではないので)。

Excelでデータを確認して、「上書き保存」などされれば、完全にデータは壊れてしまうわけです(0落ちはともかく、日付変換などは致命的)。このテの事故は大変に多いですね。以下、csvファイルに対するお作法。

大前提としては、拡張子を変更しなければならないので、拡張子を表示しているマシンってトコですね。拡張子ってナニ?!という方はまずは拡張子の表示、隠しファイルの表示で、マシンを拡張子表示状態にしてください。Macは…。わかりません。

事故防止対策:Excelとcsvファイルの関連付けを外す(Winでのやり方)

Excelをインストールすると、Excelとcsvファイルが関連付けされるので、まずはこれを解除します。

  1. エクスプローラを起動。
  2. [ツール]→[フォルダ オプション]→[ファイルの種類]→[登録されているファイルの種類]の中から拡張子[CSV]を選択。
  3. 下段[拡張子'CSV'の詳細]→[変更]→[プログラム]の中から、利用しているエディタを探す、もしくは[参照]。→[OK]

以上で、CSVとエディタへの関連付けに変更されます。ハッキリいってデフォルト設定でCSVとExcelを関連付けていても、経験上、役に立つことはほとんどないと思いますので(紛らわしくて事故の元)、外した方が賢明だと思います。

具体的なExcelでのcsvファイルの取り扱い方
  1. [*.csv]というファイル名を[*.txt]ヘ変更。
  2. Excelを起動。
  3. [ファイル]→[開く]→csvファイルを選択。→[開く]
  4. [カンマやタブなどの区切り文字によって…]にチェック→[次へ]
  5. [区切り文字]で[カンマ]にチェック→[次へ]
  6. [データのプレビュー]で、文字列型のフィールドを選択して[列の選択]で[文字列]にチェック(全フィールドの選択も可。私は大抵、データを壊したくないので、とりあえず全フィールドを文字列にして、開いて中身を確認する、というパターンが多いです)→[完了]

ちなみに、ファイル名をtxt名に変更しないと、セルの書式を選択するウィザートが起動しません。

以上がオーソドックスな開き方。

他に、似たような手順としては、[データ]→[外部データの取り込み]→[テキストファイルのインポート]で拡張子を選ぶ[ファイルの種類]のボックスで[すべてのファイル(*.*)]を選択して、任意のCSVを選ぶという方法(その後は[カンマやタブなどの区切り文字によって…]という上記の手順と一緒)もあります。

CSVファイルをエディタで開いてコピー、Excelに貼り付けて、[データ]→[区切り位置]を選択して、[カンマやタブなどの区切り文字によって…]以降の手順に入る方法もあります。

少し気の利いたエスケープシーケンスを利用できるエディタ*1をお持ちの方でしたら、カンマをタブ区切りに変換。Excelのセルの書式を文字列にしておく、エディタのタブ区切りデータをコピーしてExcelに貼り付け、という方法などもOKです。

そんなこんなで、csvファイルよりタブ区切りのデータの方が、好ましいと私などは思っていますが、世の中はcsvファイルが主流ですからね。仕方ありません。

データに0つき数字などのあるcsvファイルで、スタートの私たちから仲介役を渡ってエンドまでの距離が長い場合や、事前に取り扱い方の注意をいくらうながしても、「この人、どーもわかってないな…」と危険を感じるとき、わざと拡張子をtxtにしてファイルを受け渡すこともあります。そうすると大抵素人さんは「Excelでファイルが開かない!」と大騒ぎして、データ作成元のこちらに問い合わせしてくるので、そのタイミングで"待ってました"とばかりに、電話で開き方講座をリモートコントロールして行なうわけです。csv取り扱いのマニュアルをつけようが、事前に注意を促そうが、現実に困るまでは、何を云われているのかわからない人はわかってはくれませんので、拡張子を変えてしまうのが、相手のレベルも測れて、意外と安全なんですよね…。

*1タブは¥t、改行は¥nとかで表現できるエディタであれば、検索対象に「,」カンマを入れて、置換後文字列に「¥t」と入れれば一発で置換完了。WinでフリーのエディタだとTeraPadあたりだと、アドミ権限をもっていなくてもインストール可能なので、わりと万人向けにオススメかも。

2 件のコメント:

履歴書の送付状 さんのコメント...

とても魅力的な記事でした。
また遊びに来ます!!

匿名 さんのコメント...

地番が日付になって困ってたどり着きました。
なるほど!
csvのやりとりなのに、なぜ「.txtで保存して!」といわれるかわかりました。ありがとうございました。