• 締切済み

データの変換(xls → csv)

エクセルのデータの変換処理について質問します。 住所録のデータがあるのですが、 番地が数式や日付と捉えられないように、表示形式を文字列にしています。 先日データをcsvに変換する必要があり、変換したのですが、 文字列にしたはずが日付などになってしまい、 別の数字に変わってしまう箇所があります。 たとえば「5-6」(5丁目6番地)などを「5月6日」などと表示させずに、 そのまま「5-6」と表示させるにはどうしたらよいのでしょうか。 エクセルにあまり詳しくないもので、よくわかりません。 どうぞよろしくお願いします。

みんなの回答

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

その変換は、書き出すときではなく、読み込むときに、起こってしまっています。 実験として、CSV変換されたファイルを、「メモ帳」で開いてみてください。 CSVとは「Comma Separated Value」、日本語では「カンマで分けられた値(テキスト)」という意味なので、メモ帳で開いて内容を読むことが出来ます。 そうすると例えば、 あああ,100-0012,東京都,○○区□□町,5-6 いいい,201-0054,神奈川県,△△市××区◇◇町,7-8 こんな風に、変換されていないことがわかるでしょう。 でも、このCSVファイルを、Excelが読もうとすると、『書かれているデータ』だけで、『適当に』、値の種類を決めてしまいます。(CSVには各セルの属性情報がないため) 「5-6」というデータがあったら、「これは日付かな」と思って、勝手に5月6日にしてしまいます。(英語圏では「Mar-6」などという書き方が良くされていて、それのパターンだと間違われてしまいます) 他にも、管理番号で「0001234」とかいうのがあったら、「これは数だな」と判断されて、勝手に「1234」だけになってしまったりします。(本当は数字の7桁が欲しかったとしても!) ---- この変換を抑制するには、「テキストファイルとして読み込み、自分で分割する」という方法を取ります。 それではまず、先ほどのCSVファイルの拡張子を、「.txt」に変えてください。(「登録されている種類の拡張子を表示しない」モードだったら、表示するモードに変更する必要があります) そのファイルを、Excelで読み込むと、A列だけに各行が読み込まれます。 A列の列タイトルをクリックし、全データを選択します。 「データ」リボンの「区切り位置」をクリックします。(Excel2003ならば メニュー→データ→区切り位置) 分割設定の画面で、 ・「カンマやタブなどの~」を選択、次へ ・「カンマ(C)」のみにチェックを入れ、次へ ・最後の画面で、列ごとに「G/標準」となっている物を全て「文字列」に指定し直します。 (数値データや、本当に日付データの列は「G/標準」のままでいいですが。) そうしておいて、[完了]ボタンを押すと、カンマで区切られた値が、各列に分割され、「5-6」も「5-6」のまま、入ります。 ---- CSV形式は、誰かに渡す必要がある時などに、変換保存して、渡すという一方的な使い方にするべきですね。 普段のデータ保存には、Excel本来のファイル形式で保存するのが一番です。