Excelで日付を文字列として保存する方法は?

このQ&Aのポイント
  • 最近のExcelはバージョンすらわからない状態で使用しているが、日付を特定の書式でテキストファイルとして保存する必要がある。
  • セルの書式を文字列に設定しても、保存されたファイルでは日付が異なる形式で表示されてしまう。
  • 「2015-01」という形式の日付を正確に文字列として.csvファイルに保存する方法を教えてほしい。
回答を見る
  • ベストアンサー

excelで日付を文字列として保存したい

excel(たぶんかなり新しいバーション)を使っています。 最近のexcelはバージョンすら、見方がわかりません。 さて、日付を"2015-01"という書式で、テキストファイルとしてアップロードしないといけなくなりました。2015-09 と入力すると 2015/9/1 として保存されてしまうので、セルの書式を 文字列にし、2015-09  や 2016-12などとうちこんでから.csvで保存しました。 このファイルを開けると、それらがすべて2015/09とか2016/12として保存されています! これを セルの書式を 文字列 に変更すると42248 とかになってしまいます。 そんなこんなで一日つぶしています。マイクロ●●●社は社会に、もはや善よりも悪をもたらしているように信じていますが、それはさておき、2015-01をあるがままの文字列として.csvに保存するにはどうすればよいのでしょうか。' を頭につけるて、ファイルをアップロードすると規則違反なので、別の方法をお教えください。

  • nagaon
  • お礼率68% (293/427)

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

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.6

「csv」ファイルは、単なるテキストファイルです(メモ帳で開きます)。 ですから、まず、メモ帳(またはお持ちのテキストエディタ)で開いてみてください。 それで問題なければ、「csv」ファイルには問題ありません。 問題はエクセルに読み込むときです。 そのまま、ダブルクリックなどして開いた場合は、エクセルは勝手な事をしてしまうので、ダメなのです。 メニューの「データ」→「外部データの取り込み」→「テキストファイル」で、ファイルを選択し、「インポート」ボタンを押します。 「次へ」→「カンマ」にチェックを入れて、「次へ」 すべて「G/標準」となっているとおもいますので、すべての列で良ければ、「Shift」を押しながら、最終列をクリックすると、すべての列が選択されますので、「文字列」にチェックを入れて、「完了」すれば、すべての列が文字列として読み込まれますので、そのような勝手な変換は行われません。 もちろん、「2015-01」の列だけ、「文字列」にしたければ、その列だけが選択されている状態で、上記の操作を行ってください。

nagaon
質問者

お礼

なるほど、安易にダブルクリックで開いてはいけないということですね。列を選択して「文字列」として指定するわけですね。ありがとうございました。

その他の回答 (6)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.7

こんにちは >2015-09 と入力すると 2015/9/1 上記のように入力するとエクセルは無条件で日付(シリアル値)と 解釈して受けます。 テキスト宣言するにはシングルコーテーション(Shift+7)から始めます ’2015-09

nagaon
質問者

お礼

やはりそうでしたか。シングルクオーテーションがはいったファイルをアップロードすると、受け付けられないのでこまりますね。。。

  • msMike
  • ベストアンサー率20% (363/1773)
回答No.5

》 このファイルを開けると、それらがすべて 》 2015/09とか2016/12として保存されています! それは貴方の勝手な誤解です。 メモ帳等のテキストエディタで開いてみてください。 チャンと 2015-09とか2016-12として保存されています。このことを知らない回答者もおられるようですね。 つまり、当該CSVを作成した Excel自身で開くと化けてしまうというお粗末なことになっているのです。 これはMSお得意の“小さな親切、余計なお世話”の仕業なのです。 私なら、「MSのヤツ~」の呪いながら、CSVファイルを読み込んだ後で、セルの書式を yyyy-mm に変更します。 あるいは、別セルに式 =TEXT(A1,"yyyy-mm") で変換します。

nagaon
質問者

お礼

なんかむずかしい原因があるのですね。 マイクロソフトの社会貢献は10年ほど前に終わって、あとは害毒しか流してないものと信じています。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>セルの書式を 文字列にし、2015-09  や 2016-12などとうちこんでから.csvで保存しました。 csv形式でなくtxt形式で保存すれば良いのではないでしょうか? >このファイルを開けると、それらがすべて2015/09とか2016/12として保存されています! csv形式のファイルはExcelで開くと自動的にデータ形式を変換しますのでメモ帳やワードパットのような文書編集ソフトで開けば良いでしょう。(csv形式のファイルもメモ帳で編集できます) >それはさておき、2015-01をあるがままの文字列として.csvに保存するにはどうすればよいのでしょうか。 csvファイルをExcelで直接開かずに新規ブックを開いてcsvファイルから外部データの取込みでcsvファイルからインポートするときに日付の列をテキストに指定すれば良いと思います。

nagaon
質問者

お礼

列がある程度多いと、テキストエディターで開いても、わけわかんないので、そのためにエクセルがあると思うのですが、そのエクセルが勝手なことをするので、困っています。 別の方も書かれていますが、ダブルクリックせずに、インポートするわけですね。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問者は、エクセルの初心者で、勉強不足で、見当違いの意見を述べているような気がする。 エクセルで、日付を入力すると、例えば、本日は、半角で2018/6/11のように入力するのが標準方法で、セルの値は43262という数字(に直して)で持っています(実は、時刻部分もあるので、小数点以下付の数)日付シリアル数といって1900年1月1日を第1番目とする、今日の日付の実カレンダーでの順序数(何日目に当たるか)です。 エクセルで、日付の演算や関数での加工や、セルの表示形式は、すべて日付シリアル値でセルにデータが入っていることが前提です。見た目は同じでも、文字列での入力はだめで、関数で文字列を日付シリアル値に変換しないといけない。 従って日付を省いた日付(年月のみ)は、処理がむつかしい。すべて1日にわざと入力して、表示形式で年月だけに見せたりする。 それをユーザーは、日付けの書式を指定する操作を行い、好みの表現にして見せて・見ているのです。 その際、日付をフル日付で見せないで、ユーザー定義で、「yyyy-mm」を適用すれば、見かけ上2018-06に見えます。 これを文字列の「2018-06」としたいなら、別列のセルで関数を使って =TEXT(A1,"yyyy-mm")とします.別列が使わないなら、VBAというプログラムをつくることが必要です。 以上が基礎論です。 これらの点は、誰かエクセルのわかった人に聞くか、講習を受けるか、辛抱強く自習しないと、自ずとわかるというわけではないでしょう。 ーー 質問者の言うような日付文字の、CSVファイルを作るのは、また別テーマの問題です。エクセルは、できるだけ数字化してセルに数値データとしようとする工夫がされているので、なかなか梃子釣ります。 一番手軽のは「 '2018-06 」と一番先頭に、アポストロフィをつけて入力することじゃないかな。文字列の扱いになります。入力し直すとか。 これでうまく行くか、やってみてください。 アポストロフィをつけて入力して、 エクセルで保存し(拡張子csv)、メモ帳で開くと 2017-12 2018-05 2018-06 のようになりましたが。 私なら、上記の件がうるさいので、エクセルに頼らず、VBAでCSVファイルを作りますが。

nagaon
質問者

お礼

エクセルに打ち込まれている方ですね。ありがとうございました。

  • f272
  • ベストアンサー率46% (7998/17100)
回答No.2

> セルの書式を 文字列にし、2015-09  や 2016-12などとうちこんでから.csvで保存しました これで大丈夫ですよ。「このファイルを開けると、それらがすべて2015/09とか2016/12として保存されています」というのは、そのファイルをエクセルで開けるからです。エクセルで開けるときに2015-09という文字列を自動的に2015年09月1日と解釈して適当な書式で表示するのです。csvファイルを開くときにエクセルを使わなければ、ちゃんと2015-09という文字列で保存できていることが確認できるでしょう。

nagaon
質問者

お礼

ありがとうございます。列の数がかなりあって、エクセルで開けないと仕事になりません。でも2016-12として保存されているなら、そう表示してくれると助かるのですが。。。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

2015-01をあるがままの文字列として.csvに保存するには、おそらく、' を頭につける以外に方法はありませんので、エクセルで全セルの書式を文字列にしてから2015-09 と入し、.txtのファイル形式で保存されてはいかがでしょうか。

nagaon
質問者

お礼

なるほど.txt形式というのもひとつの手ですね。

関連するQ&A

  • 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

  • エクセルの日付への自動変換を止めさすには

    "1-2-3","2-24" という文字列の入ったCSVファイルを エクセルで開くと 2001/2/3 2月24日 というように 自動で日付と判断されてしまい、そのまま上書きすると 日付データとして確定してしまいます。 エクセルで開いても、該当のセルの値が 1-2-3 2-24 の文字列として使いたいのですが、 エクセルの「書式・セルの書式・表示形式」で、”文字” にしても、うまく出来ません。

  • EXCELで日付を文字列として取り出すには

    EXCELで日付形式のセルの内容を、そのイメージのまま文字列にするにはどうすれば良いでしょうか。何かうまい方法があれば教えてください。 例えば、2006/01/05 と表示されている日付をそのまま文字列として 取り出したいのです。単にセルの書式設定で文字列に変えただけでは 38722とタイムスタンプの値らしきものに化けてしまうので困っています。

  • エクセル・文字列で保存されているデータを日付にしたい

    人からもらったデータです。 日付が文字列で保存されていて20060322という書き方で沢山入力されている列があります。 2006/03/22の表示に変更したいです。 列を指定して書式、セル、表示形式、日付、種類で変更してみようとしましたが、できませんでした。 そういえば、テキストデータを読み込む時、表示形式を指定し忘れて勝手に日付になってしまった文字列(数なのですが)を、後で文字列にするとおかしな数になってしまったことがありました。。。 保存されている表示形式を上手に変更する方法はありますでしょうか? 教えてください。

  • Excel(csv) で入力した文字が日付になってしまいます。

    Excel(csv)で住所を管理しています。 一つのセルに1-1-1のように入力をし、 次回そのファイルを開くと2001/1/1と表示され、 セルの書式設定の表示形式をみると日付になっています。 文字列にしてみても、36892というような 数字にしかならず、元の打ったデータがなんだったか わからなくなってしまいます。 なんとかこの現象を回避する方法はありますでしょうか? よろしくお願いします。

  • Excelで文字列として 0023を表記できますが 保存後 再立上したら00が消えています。なぜ?

    Excelで文字列として 0023を表記できますが 保存後 再立上したら00が消えて 23だけになっています。なぜ? 郵便番号を左3桁 と 右4桁を 別々のセルに記入したところ セルの書式設定 で 文字列に指定して きちんと左端の0が表示されているのでファイル保存し終了しました。・・・が 再びプログラムを立ち上げてファイルを開いたら 左端の0が 表記されていません。 解決方法を是非 教えて下さい。

  • Excelで日付の書式を指定文字列に変換

    Excelで日付の書式を指定文字列に変換 セルから日付情報を得て、文字列でyyyymmddに変換するには、どのようにすればいいでしょうか。VBA・関数のどちらでもかまいません。よろしくお願いします。

  • ExcelでCSVを日付を読み込むと化ける

    こんにちは。CSVファイルをExcelに読み込むと日付のところが文字化けをしてしまいます。 A1に2012/04/05 というデータを読み込むと、1905/7/4 とA1では表示されてしまいます。これはなぜこのような現象が起こるのでしょうか? セルの書式を「日付」にしても解消されません。

  • Excel VBAで文字列の日付を判定

    Excel VBAで文字列の日付を判定 文字列の書式で”19900101”などとセルに入力されている場合に実際に存在する日付かを判定する方法はありますでしょうか? たとえば、19990132などと入力されている場合はエラーにしたいのです。ISDATEを使うのかともおもいましたがうまくいきません。 よろしくお願いします。

  • EXCELの日付データを文字列に変換したい

    EXCELの和暦形式の日付データを文字列に変換する方法を教えてください。 たとえば、H17.9.2をそのまま文字列に変換したいのです。 最初から文字列データとして入力すれば問題ないのですが、日付データ(標準)として入力されたデータを書式→セル→文字列で変換するとシリアル値に変わってしまいます。(H17.9.2→38597) どうしたらよいのでしょうか。お願いします。

専門家に質問してみよう