• 締切済み

CSV変換作業について困ってます

CSV変換作業について困ってます 事の顛末から書きます。 とあるCSVをダウンロードし、エクセル2007で開くと、セルの見た目は[May-10]となっていて 数式バーの中では[2010/5/1]となっています。 このCSVファイルをそのまま上書き保存をしたら 今度はセルの見た目が[10-May]となっており、数式バーの中が[2010/5/10]と変化してました インポートする為のデータなので、セルの見た目は[May-10] 数式バーの中では[2010/5/1] の状態で保存したいのですが何か回避方法はありますか? また、何故同じCSVを同じOfficeで開いているのに変化が起きてしまうのでしょうか?

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

>そのCSVファイルをダウンロード直後、Excelで開かずにメモ帳などのテキストエディタで開いた場合、 >[May-10]の箇所はどうなっていますか? この質問に対するお答えが頂けなかったようで。 実はここがポイントだったのかなと思います。 >[コントロールパネル]-[地域と言語のオプション]-[地域オプション]タブで... などとごちゃごちゃ書いてしまい申し訳なかったです。 そんな事ではなく、ただ単に、データが 2010/5 や 2010/05 2010-5 2010-05 なだけです。多分。 確認してみてください。 Excelで開いて保存する事によって、  【CSV】   【Excel】  2010/5 → 表示[May-10](2010/5/1) → →May-10 → 表示[10-May](2010/5/10) と変換されたのでしょう。 >開いたCSVを一回保存すると、違った内容になるのはなかなか厳しい物がありますね。 『保存すると、』ではなく、『Excelで開くと、』です。 日付と認識されて表示形式が変わってしまい、実データがシリアル値に置き換えられてしまいます。 その場合、【保存時に表示形式を "yyyy/mm" や "yyyy/m"、"yyyy-m" などにする】と良いです。 ※インポートの項目を確認して、それに合わせてください。 ※本来、yyyy/m/d の日付データが入ってないといけないけど、日データが抜けてる不正値なのかもしれないですよね。 >システム上セルの見た目は[May-10]となっていて数式バーの中では[2010/5/1] この様な形式でないと取り込めない.. そんな事は無いはずなので、よく確認してください。 CSVファイルもTXTファイルも単なるテキスト(文字列)データですから、表示形式は無いです。 Excelを使って確認しようとした時に、『見た目は[May-10]となっていて数式バーの中では[2010/5/1]』になるだけです。 重ねて言いますが、そのまま保存せずに、 インポート先のシステムの、取り込みデータの条件に合わせたデータ形式で保存すれば回避できるはずです。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

おっしゃている事がよく分からないなあと訝しく思いながら再現してみました。 当方xl2000ですが、 A1:2010/5/1→書式1-May A2:2010/5/1→書式May-10 というシートをcsvで保存して再度読み出すと、 A1:1-May A2:10-May に変わってしまいました。(A2:2010/5/10になってます) csvファイルをテキストエディターで開いてみると、 1-May May-10 という内容でした。 エクセルでCSVを読み込む時に、誤る様です。 これって、2000→2007まで改善されていないバグ? エクセルでcsvに書き出すと、セルの値でなくテキスト(VBAで表現するとRange("A1").valueでなく、Range("A1").text)で、表示されている通りにCSVに書き出す様なので、年の情報(あるいは日の情報)が消えてしまいます。 1-Mayは止めて、2010/5/1という書式にして書き出すのが吉だと存じます。

lovethee_ever
質問者

お礼

そうなんです、私もこの状態を見た時はじめは気がつかずに、何でインポートでエラーが発生してるの?? と思いながらCSVを眺めておったのです… ただ、システム上セルの見た目は[May-10]となっていて数式バーの中では[2010/5/1] この様な形式でないと取り込めない事から焦っておりました。(取込先の書式は「日時」を限定しておりましたゆえ…) 何とかtxt形式にして取込むことはできたので回避はしたのですが、しっくり来なかったので… end-u様の回答を見る限りバグというかMSの認識の方法の問題ですね。 再現ありがとうございました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

前提条件がちょっと解せない感じです。 『とあるCSVをダウンロードし、エクセル2007で開くと、セルの見た目は[May-10]となっていて 数式バーの中では[2010/5/1]となっています。』 そのCSVファイルをダウンロード直後、Excelで開かずにメモ帳などのテキストエディタで開いた場合、 [May-10]の箇所はどうなっていますか? CSVファイルは単なるテキストデータですから、書式情報は保持しません。 それに、『mmmm-yy』のつもりで May-10 という文字で保存したとしても、 Excelで開く時に、自動的に組み込み形式の日付形式に変換されます。 http://support.microsoft.com/kb/214233/ja "月-日"という形式の日付だと認識して、『d-mmm』に勝手に変換されるわけです。 それに、単なる文字列である[May-10]には"日"の情報がないです。 別の年月でも常に1日にしたい場合はともかく、[2010/5/2]や[2010/5/3]などの設定はできません。 >セルの見た目は[May-10] 数式バーの中では[2010/5/1] の状態で保存したい... 保存したい場合はCSVファイルではなくXLSファイルなどで表示形式の情報も保存するしかないです。 もっとも、保存ではなく、Excelで開いた時のデータの見え方だけの問題でしたら、 『セルの見た目は[May-10] 数式バーの中では[2010/5/1]』にする事は可能です。 [コントロールパネル]-[地域と言語のオプション]-[地域オプション]タブで [日付]の「短い形式」を 「dd/mm/yy」 にします。 でもこれはかなり無理矢理な設定で、他の作業にも影響しますし、混乱の元です。あまりお勧めしません。 要は、そのCSVテキストデータを何に使いたいかという問題なのだと思います。 インポートの条件が "mmmm-yy" という『文字列』なら、素直に[May-10]という文字にするだけで良いのではないですか? Excelで開いて作業する必要がある場合は、 [外部データの取り込み]などを使って、日付データとしてではなく『文字列』として読み込むか、 あるいは 普通にCSVで開いて作業し、保存時に表示形式を"mmmm-yy"に戻してあげれば良いです。

lovethee_ever
質問者

お礼

解りにくい文章の理解からありがとうございました。 他のシステムから何故かその形でCSVをダウンロード出来たので、何か方法があるのかな?と思ってました。(自分で作ったもので無いので詳しくはわかりませんが…) 文字列ではインポート先で何故か蹴られてしまうのです…  txtデータでは行けるのですが… ただ開いたCSVを一回保存すると、違った内容になるのはなかなか厳しい物がありますね。 MSのサイト参考になりました。ありがとうございました。

関連するQ&A