• 締切済み

エクセルで日付入力

エクセルで、『2003214』と入力したものを 『2003/2/14』という風に書き換えたいのですが、 上手くいきません……。 text関数で”yyyy/m/d”とやったら、 シリアル値で表示されて区切られてしまいます。 どなたか、良い方法を教えてください!!!

みんなの回答

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

(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)
回答No.6

すでに多数のセルに『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]になります。

回答No.5

2003214なら2003/2/14と判断できますが、仮に2003111だったらどうなります? 2003/1/11ですか?2003/11/1ですか?YYYYMMDDといった並びの記載でないと判断がつきませんね。したがって変換は無理です。

  • kotoko
  • ベストアンサー率33% (1142/3363)
回答No.4

セルの書式設定の表示形式の分類(C)の種類(T)で [1977/3/4]というのを選択します。 [2/14]と入力すると[2003/2/14]と表示されます。

  • HageoyaG
  • ベストアンサー率43% (171/395)
回答No.3

書き換えるだけなら セルの書式設定→ユーザー定義で 「####"/"#"/"##」と入力して下さい。 ただ、この方法だと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)
回答No.2

セルの書式設定でよいとおもいます。 任意のセルを指定する 指定したセル内で右クリックする、 セルの書式設定を選択する、 日付 を選択する、 表示形式を選択して OK でよい、

  • list
  • ベストアンサー率30% (61/203)
回答No.1

入力されている値はシリアル値でなく単なる数字ですよね? また、『20030214』と言う様に西暦4桁、月2桁、日2桁とかではないのですよね? 上記と違うのであれば、2003年1月14日と2003年11月4日が同じ値(2003114)となるため、どちらの日付か判断が難しいと思います。

cinnamon555
質問者

お礼

なるほど、、、どうもありがとうございます 1月と11月のことは すっかり考えに入っていませんでした 確かにそうですね… そもそも2003214という記述自体に 無理がありました。 早くの御回答、ありがとうございました

関連するQ&A

  • エクセルの日付表示

    エクセル2000です。例えば 19720105と入力されているセルを、最終的に昭和47年1月5日と表示するのに、まず、1972/01/05と、表示することから始めてるのですが、セルの表示形式でyyyy/m/dにすると、エラー表示の########というような 表示になります。たとえば 手打ちで、日付け表示のところに/を入れることもできるでしょうが、数が莫大でできません。なにか 関数や表示形式で、たとえば今日なら20030601 の表示を平成15年6月1日と表示できる方法を教えてください。よろしくお願いします。

  • エクセルのユーザーフォームのテキストボックスに日付が入力できない

    いつもお世話になります。初心者ですのでよろしくお願いします。 初めてエクセルのユーザーフォーム作成に挑戦しています。 フォームに日付を入力するためのテキストボックスを配置したのですが、yyyy/m/dで入力しようとして2006/8まで入力すると勝手に2006/8/1/と入力されてしまいます。2006/8/25と入力できるようにするにはどうしたらよろしいでしょうか? よろしくお願いします。

  • EXCEL 日付表示について

    EXCELのセルに「2009/3/1 16:15」と表示されています。 (実際には「2009/3/1 16:15:00」と入力し、セルの書式設定のユーザー定義で「yyyy/m/d h:mm」と設定しています。) このセルの「2009/3/1」だけ抜き出したいと思っていますが関数など、いい方法はないでしょうか。 実は、このセルの列には他に「2009/3/1 11:51:03」のようなセルがありまして、ピボットテーブルで日付別件数を出したいと考えています。 よろしくお願いいたします。

  • 日付から元号+年を取り出したい(エクセル)

    Win98SE、ExcelXPです。 例えば、セルA1に2003/8/1と入力されています。 もちろん、表示形式はyyyy/m/dです。 このセルA1から年・月・日・曜日をそれぞれ別のセルに取り出したいのですが、年がうまくいきません。 曜日であれば、セルE1に『=text(weekday(A1),"aaa")』と入力すれば、『火』と表示されるのですが、 セルB1に『=text(year(A1),"ggge")』と入力すると、シリアル値2003の元号つまり『明治38』と表示されます。 これを、『平成15』と表示するにはどうすればいいのでしょうか?

  • Excel 日付変換をマクロで2

    24/5/1→2012/5/1 28/10/30→2016/10/30 27/6→2015/6/00 右のように変換するためにいつもは =IFERROR(CHOOSE(LEN(G10)-LEN(SUBSTITUTE(G10,"/",)),TEXT(("H"&G10&"/1")+0,"yyyy/m")&"/00",TEXT(("H"&G10)+0,"yyyy/m/d")),"") という関数で変換していましたがどうしてもマクロでやりたいので教えてください。 ※日付が入力されている場所は毎回変わり行の長さも違うので自分で変換したい範囲を 選択してから実行したいです。 27/6のように日が入ってない場合は00をできれば入れたいが無理なようであれば なくてもかまいません。

  • 日付でデータを抽出したい

    A列には2007/10/1~2007/10/31と入力されていて B列にはランダムに数字が入っています。 yyyy/m/d~yyyy/m/dまでのB列の平均を求めたいです。 「yyyy/m/d」(検索する日付)は常に変えられるようにしたいです。 オートフィルタのオプションでも出来るのですが 値を求めて別セルに入力したいため それ以外の方法が知りたいです。 A列yyyy/m/dに隣接するB列の値だけなら VLOOKUP関数で求めたい日付をC1に入れて =VLOOKUP(C1,A:B,2)で求められるのですが 「yyyy/m/d~yyyy/m/d」の求め方がわかりません。 よろしくお願いします。

  • エクセルの日付入力について

    エクセルの日付入力について質問します。 例えばAセル Bセルの書式設定にユーザ定義の yyyy"年"m"月"d"日"を設定します。 (1)Aセルに12/25と入力すると→2007年12月25日 (2)Bセルに1/8と入力すると→2007年1月8日 となります。 これを(2)Bセル1/8を入力すると2008年1月8日とする為には どうしたらよろしいでしょうか? 関数を使用かもしくは簡単な方法があればご教授願います。

  • エクセルの日付入力について

    エクセルの日付入力について質問します。 例えばAセル Bセルの書式設定にユーザ定義の yyyy"年"m"月"d"日"を設定します。 (1)Aセルに12/25と入力すると→2007年12月25日 (2)Bセルに1/8と入力すると→2007年1月8日 となります。 これを(2)Bセル1/8を入力すると2008年1月8日とする為には どうしたらよろしいでしょうか? 関数を使用かもしくは簡単な方法があればご教授願います。

  • EXCEL 日付の入力形式

    こんにちは。 日付が、dd/mm/yyyyの形式で入力されたデータをもらいました。 関数を利用したいのでEXCELに日付として認識させたいのですが、 セルの書式設定で設定してもだめなようです。 質問 1)yyyy/mm/ddの形式で入力されていないと日付として認識されないのでしょうか? 2)現在の形式のまま、日付として認識させる方法はありますか? 3)dd/mm/yyyyをyyyy/mm/ddに変換する方法はありますか? 以上、よろしくお願いします。

  • SUMIFSに日付を使いたいのですが…

    どなたか助けて下さい。 現在のデータとして複数のシートがあり、年月で纏める為にSUMIFSを使おうと考えております。 1枚目のシートには日付が打ち込んであり、年月日まで入っています。(yyyy/m/d) Sheet1 A                 B 2008/11/29(yyyy/m/d)  30 2008/12/29(yyyy/m/d)  50 2008/12/31(yyyy/m/d)  100 2枚目のシートには年月が入力されてあり、「200812」と数字が入っております。 A       B 200812   ? 最終的には2枚目のBに12月の合計を纏めたいので、1枚目の日付を変更したいのですが 書式設定の表示形式のユーザー定義で「yyyymm」にすると表示は「200812」 ですが、当り前の事ながら、データとしてはそのように反応してくれません。 (合計値として150となるようにしたい) そこで、これをどのように結び付けるのか、また別の方法があればと思い どなたか教えて頂ければ幸甚です。

専門家に質問してみよう