- ベストアンサー
【エクセル2010】文字列を日付に変える方法は?
2016年の月を表した、 下記のような文字列があります。 yyyymm 201601 201602 201603 これを、日付に変えて、 JAN 16 FEB 16 MAR 16 としたいのです。 一番効率的にするには、どうすればよいでしょうか? 関数でもマクロでもなんでもかまいません。 一番早くて正確な方法を探しています。 ありがとうございます。。。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>一番早くて 質問者は、この質問内容から推定して、エクセルの経験が少ないだろう。 だったら早くというより、日付の基礎から勉強した方がよい。 (「日付シリアル値」が初見なら、WEBで照会すること。) (2)そうでないとエクセルの便利で多様な、日付の表示形式を使えない、のを知っているか。 文字列データに対して、日付の表示形式は、ではだめなのだ。 JANなどの表示は、表示形式を使わないと関数では複雑すぎる。 またそのセルのデータを日付としても使えない。下記のB1セルの値。 「日にち」の部分を入れることと日付を知らせる区切りのスラッシュを入れるべきです。 そこで日付文字列を日付シリアル値に変える関数があるから使うのだ。 それはDATEVALUE関数だ。 例 A1に ’201601 B1に =DATEVALUE((LEFT(A1,4)&"/"&RIGHT(A1,2)&"/"&"01")) 結果は 43370とでるかもしれない。これが日付シリアル値です このB1に対しJAN01と出すのは http://www.relief.jp/itnote/archives/017913.php ユーザー定義のボックスに mmm-yy
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
確認したいのですが >これを、日付に変えて とは、どういった意味で仰っておられるのでしょうか? 201601 201602 201603 というデータがあった際に、セルに入っているデータ自体は 2016/01/01 2016/02/01 2016/03/01 という「日付データ」に変換した上で、セルの書式設定を使用して表示のみを JAN 16 FEB 16 MAR 16 に"見えるだけ"にするという事なのでしょうか?(モニター上の表示や印刷結果は「JAN 16」であっても、セルに入っているデータ自体は「2016/01/01」のまま) それとも、セルに入っているデータ自体を JAN 16 FEB 16 MAR 16 という、「文字列データ」(日付として扱う事が出来ないデータ)に変換するという事なのでしょうか? もし、「日付データ」に変換した上で表示のみを「JAN 16」にしたいという事であれば次の様な方法になります。 今仮に、「201601」等の元のデータがA1セルに入力されているものとしますと、「JAN 16」と表示させたいセルの書式設定の表示形式を[ユーザー定義]の mmm yy に設定した上で、次の様な関数を入力し下さい。 =IF(A1="","",IFERROR(TEXT(A1,"####-##")+0,"(日付に非ず)")) 尚、「IF(A1="","",IFERROR(」や「,"(日付に非ず)"))」の部分はエラー等のおかしな表示が現れない様にするために付けているものであり、 =TEXT(A1,"####-##")+0 だけでも動作しない訳ではありません。 一方、「文字列データ」(日付として扱う事が出来ないデータ)に変換するという事であれば、「JAN 16」と表示させたいセルに次の様な関数を入力し下さい。(書式設定は不要です) =IF(A1="","",IFERROR(TEXT(TEXT(A1,"####-##"),"mmm yy"),"(日付に非ず)")) 尚、「IF(A1="","",IFERROR(」や「,"(日付に非ず)"))」の部分はエラー等のおかしな表示が現れない様にするために付けているものであり、 =TEXT(TEXT(A1,"####-##"),"mmm yy") だけでも動作しない訳ではありません。
お礼
ご回答ありがとうございます。 (1)変換という意味です。 (2)最後の方法ですが、 2016-05と表示されます。 ユーザー定義で、mmm yyとしているのにです。 どこかで私が間違っているのでしょうか。 (3)ちなみにこれでやってみたら(ハイフンなし) =TEXT(TEXT(A1,"######"),"mmm yy") DEC 51 と表示されました・・・
=TEXT(REPLACE(A1,5,,"/"),"mmm yy") A1は文字列で「201601」 表示はご希望通りになります。
お礼
ありがとうございます。 うーん。ならないですね。 2016/01と表示されてます。 何が足りないのでしょうか・・・
- msMike
- ベストアンサー率20% (368/1813)
=SUBSTITUTE(UPPER(TEXT(DATE(LEFT(A1,4),RIGHT(A1,2),1),"mmm y"))," "," ")
お礼
すごい!これも上手くいきました!!!
- shintaro-2
- ベストアンサー率36% (2266/6245)
>一番早くて正確な方法を探しています。 いろいろ方法がありますが A列にデータがあるとして B列に作業列を入れて =(left(a1,4)&"/"&mid(a1,5,2)&"/1")*1 として、 表示形式をmmm" "yy とされてはどうでしょう。 最後にコピー時に値の貼り付けで完成です。
お礼
すごい! 上手くいきました!!!
お礼
ありがとうございます。 上手くいきました。 「日にち」の部分、と、日付を知らせる区切りが、必要なんですね。 勉強になりました。