ExcelとCSVファイルの相性

CSVファイルを扱う場合、Excelをうまく使えば様々な編集を簡単に行うことができます。一方で、Excelの動きを理解していないと、気付かないうちに思いもよらない変更がされてしまい、困ることがあります。今回は、CSVファイルをExcel上で取り扱うときに見られる問題点をみていきます。

  • 前ゼロが落ちる。
    商品番号などの場合、番号の前半部分がゼロで埋められていることがあります。このようなデータを含むCSVファイルをExcelで開くと、前半部分のゼロが抜け落ちることがあります。これを「前ゼロが落ちる」「前ゼロが抜ける」などと言います。

    メモ帳などのエディタではこのようなことは起こらないのに、なぜExcelでは「前ゼロが落ちる」のでしょうか? これは、Excelがより厳密にデータを取り扱っているためです。

    Excelでは、「数値」と「文字列」を別のものとして扱います。これはExcelに独特のものではなく、コンピュータの仕組みからくるものです。多くのプログラム言語でもデータ型としてこれらを区別しています。

    Excel2003では、任意のセルを右クリックして「セルの書式設定-表示形式タブ」を選択すると、データの種類を選択できます。

    セルの書式設定

    ここでいう「数値」とは、データそのものの値のことを意味します。「文字列」とは、アルファベット・漢字・数字・記号などの文字の集まりです。例えば、数値で「256」は「2×100+5×10+6×1」(10進数)となりますが、文字列では「2」と「5」と「6」という文字の集まりになります。

    「数値」と「文字列」の大きな違いは、演算ができるかどうかです。「数値」は足し算などの四則演算で使用できますが、「文字列」は使用できません。ただし、Excelや多くのプログラム言語では、自動的に文字列を数値に自動変換する機能を持っており、簡単に演算ができるようになっています。

    この自動変換機能は便利なのですが、副作用もあります。つまり、「前ゼロが落ち」てしまうのです。「000100」という文字列を自動変換すると、「100」という数値になります。もし「000100」が商品コードであれば、前半部分のゼロがなくなることによって不都合が生じる場合があります。

    これを回避するには、文字列から数値に自動変換する機能を無効にすることです。Excel2003であれば、セルの書式設定で「文字列」を指定します。プログラム言語であれば、データ型を明示的に指定するようにコーディングします。

    この他にも、指数の取り扱いなどいくつかの「コツ」があります。少し長くなりましたので、別の記事でご紹介していきます。

    ExcelとCSVファイルの相性 その2