- 締切済み
エクセルで日付入力
エクセルで、『2003214』と入力したものを 『2003/2/14』という風に書き換えたいのですが、 上手くいきません……。 text関数で”yyyy/m/d”とやったら、 シリアル値で表示されて区切られてしまいます。 どなたか、良い方法を教えてください!!!
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
(1)A列にデータがあるとして、B列に=LEFT(A1,4)、C列に=MID(A1,5,LEN(A1)-4)といれます。 (2)B列2003、C列に121となったとします。 12月1日か1月21日かは、コンピュタには判りません。あなたが判断しなければなりません。 (3)そこで少ない方と思われる10月11月12月行だけあなたが判断してD列にサイン1桁をいれます。10-12月の時は「1」(何でも良い)をいれます。 (4)E列に=IF(D1=1,LEFT(C1,2),LEFT(C1,1)) と入れます。月がでます。 (5)F列に=IF(D2=1,MID(C2,3,LEN(C2)-2),MID(C2,2,LEN(C2)-1))といれます。日が出ます。 (6)後はB、E、F列を使って日付を作ります。 =DATE(B1,E1,F1)
- iro_han
- ベストアンサー率39% (17/43)
すでに多数のセルに『2003214』といった形式で入力済みで、入力しなおすのが困難という状況と見ました。 書き換えについては、#3のHageoyaGさんの最後の式が非常にすばらしいように思えます。で、HageoyaGさんが指摘する問題点の7桁、8桁の混在ですが、6桁の場合(1月1日など)も考えられますので、IF関数でとても長い式になってしまいます。 =IF(A1>=10000000,TEXT(DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,2)),VALUE(RIGHT(A1,2))),"yyyy/m/d"),IF(A1>=1000000,TEXT(DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,1)),VALUE(RIGHT(A1,2))),"yyyy/m/d"),TEXT(DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,1)),VALUE(RIGHT(A1,1))),"yyyy/m/d"))) これは単純にHageoyaGさんの式をIF関数で6、7、8桁に対応できるようにしたものです。 しかし、一番厄介なのは#1のlistさんが指摘された、7桁のとき、月が2桁なのか、日が2桁なのかの判断が付かないことです。こうなるとお手上げです。上記の式は、7桁入力時に、月が1桁・日が2桁のときにのみ有効です。入力桁数を8桁固定にしておけば問題なかったのですが…。 今後入力する際は、#4のkotokoさんの言うように、[2/14]と入力しましょう。表示形式の選択無しでも[2003/2/14]と表示されます(Excel2002で確認)。ちなみに年の表示は現在の年表示になるので、年が明ければ同じように入力しても[2004/2/14]になります。
- shishishishi
- ベストアンサー率39% (362/921)
2003214なら2003/2/14と判断できますが、仮に2003111だったらどうなります? 2003/1/11ですか?2003/11/1ですか?YYYYMMDDといった並びの記載でないと判断がつきませんね。したがって変換は無理です。
- kotoko
- ベストアンサー率33% (1142/3362)
セルの書式設定の表示形式の分類(C)の種類(T)で [1977/3/4]というのを選択します。 [2/14]と入力すると[2003/2/14]と表示されます。
- HageoyaG
- ベストアンサー率43% (171/395)
書き換えるだけなら セルの書式設定→ユーザー定義で 「####"/"#"/"##」と入力して下さい。 ただ、この方法だと10月以降は適用されません。 10月を10月と認めさせるためには8桁で入力しないと・・・。 すべてが8桁でしたら =LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2) で表示させ、 =TEXT(DATE(VALUE(LEFT(A1,4)),VALUE(MID(A1,5,2)),VALUE(RIGHT(A1,2))),"yyyy/m/d") で、日付として認識させることができます。 が、一番問題なのが7桁と8桁が混在することのような気がします。 IF関数などを駆使して、7桁のときは先頭文字列から4文字目だけを8桁のときは4文字目と5文字目を月データとして抽出する必要がありそうです。
- tds2a
- ベストアンサー率16% (151/922)
セルの書式設定でよいとおもいます。 任意のセルを指定する 指定したセル内で右クリックする、 セルの書式設定を選択する、 日付 を選択する、 表示形式を選択して OK でよい、
- list
- ベストアンサー率30% (61/203)
入力されている値はシリアル値でなく単なる数字ですよね? また、『20030214』と言う様に西暦4桁、月2桁、日2桁とかではないのですよね? 上記と違うのであれば、2003年1月14日と2003年11月4日が同じ値(2003114)となるため、どちらの日付か判断が難しいと思います。
お礼
なるほど、、、どうもありがとうございます 1月と11月のことは すっかり考えに入っていませんでした 確かにそうですね… そもそも2003214という記述自体に 無理がありました。 早くの御回答、ありがとうございました