• ベストアンサー

Excelである文字列を読み込むと日付にされてしまうのを回避したい

 CSVファイルに以下のような文字列(全角、半角どちらでも)が ありまして、これをエクセルで開くと、下のように日付として解釈 されてしまうのですが、ファイルを開く時点でこれを回避する方法 はありますでしょうか。保存もCSVにするため、形式を文字列に することは出来ません。 1-1-9 1-1-11 1-1-14 1-1-16  ↓ 2001/1/9 2001/1/11 2001/1/14 2001/1/16

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 良くあるご質問です。 Excelが、なぜ、そのようなオプションを標準的に持たないのかは分りませんが、日本とアメリカの違いなのでしょうか?ただ、標準的に出力したものが読み込み時に、同じ文字/数字がサポートされないというのは、「自動キャスト機能」とかいうと思いますが、ありがた迷惑な話ですね。 そこで考えてみましたが、CSVインポートを良く使うようでしたら、マクロで対処すればよいと思いますね。使ってみた結果、自分自身、これは便利だと思いました。 後は、これをPersonal.xls(個人用マクロ)に入れて、ツールにボタンをつけてマクロ登録でもすればよいと思います。 インポートする場所は、セルポインターのある場所以降になります。 '<標準モジュールに登録してください> Sub OpenCSV()  'CSVファイルをテキストインポートするマクロ  Dim Fname As String, TextLine As String  Dim Fno As Integer, i As Long  Dim AC As Range  Dim myArray() As String  Set AC = ActiveCell  Fname = Application.GetOpenFilename("CSV ファイル(*.csv),*.csv")  If Fname = "False" Then   Exit Sub  End If  Fno = FreeFile()  Open Fname For Input As #Fno  Do Until EOF(Fno)   Line Input #Fno, TextLine   'SpaceDelete TextLine ''スペースを抜くオプション   If Len(TextLine) > 0 Then    myArray = Split(TextLine, ",")    AC.Offset(i).Resize(, UBound(myArray) + 1).Value = myArray    Else    AC.Offset(i).Value = TextLine   End If   i = i + 1  Loop  Close #Fno  Set AC = Nothing End Sub ' Private Sub SpaceDelete(myStr As String) myStr = Replace(Application.Trim(myStr), Space(1), _      "", Compare:=vbTextCompare) End Sub Excel 2000以上です。それ以下ですと、配列のテキストを確保できません。また、そのままのマクロでは、カンマ区切りの間の空白値を取ることはしてませんが、コードの中ほどの'SpaceDelte のところの「'」を取り去ると、空白値が除去されます。

nihon_no_samurai
質問者

お礼

今回この方法を使わせていただきました。ありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

あまりお勧めしませんが、文字列だと無理やり解釈させる 方法として、コーテーションでくくり、頭にイコールを つけるという方法があります。 CSV形式だと以下のような形式なると思います。 test,"=""1-1-9""",test CSVに出すときまたは、出した後にそのような変換が できるなら試してみる価値はあるかもしれません。 なお読み込んだあとに、シート全体をコピーして、 「形式を選択して貼り付け」で「値」貼り付けすると よいでしょう。

nihon_no_samurai
質問者

お礼

ありがとうございます!

すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

直接読み込む場合は無理ですね。 読み込み前に拡張子を「txt」に変える。 「データ」「外部データの取り込み」「テキストファイルのインポート」で読み込む 「-」を日付にされない別の記号(「─」等)で設定する。

nihon_no_samurai
質問者

お礼

ありがとうございます!

すると、全ての回答が全文表示されます。
回答No.1

テキストの読み込みウィザードが起動するようにして、毎回、該当 する列についてExcelが勝手に解釈しないよう指示するしかありませ ん。ファイル名の末尾を.txtに変更するってのがポピュラーです。 ExcelはCSVを閲覧もしくは編集するソフトとしてはあまり好ましく ありません。関連付けを変更して、軽快で余計なことをしないテキ ストエディタを使う方がいいですよ。 ソートなどでどうしてもExcelを使いたいのであれば、「番地だけで 1列にしない」など、データ構造の見直しをお薦めします。

nihon_no_samurai
質問者

お礼

ありがとうございます!

すると、全ての回答が全文表示されます。

関連するQ&A