• ベストアンサー

DATE関数が正しく表示されない。

こんにちは 例えばA1にTODAY関数、A2に数値データが入れてあり(例:0000000600) 別セルに =DATE(MID(A2,8,1),MONTH(A1),DAY(A1)) と関数を使ったのですが、年度が2006になるはずが1906と表示されてしまいます。 解決方法があれば教えてください。 お願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

=DATE(6,7,10) が1906/7/6 となるのでそういう結果になります。 =DATE(MID(A2,8,1)+2000,MONTH(A1),DAY(A1)) とでもしてみますか?

5244
質問者

お礼

素早い回答ありがとうございます。 やってみたらちゃんと反映致しました。 ご助力ありがとうございます。

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

その他の回答 (1)

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.2

MID(A2,8,1)の中身は「6」です。 Excelの場合標準で年数は、1900年から表しますので、「1906」になってしまいます。  なぜ、「2006」になると思ったのでしょうか?。

5244
質問者

お礼

理解不足ですいません。 年数はあくまで当日の年数をGETしてくれるものだと言う思い込みがありました。 アドバイスありがとうございます。

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

関連するQ&A

  • DATE関数の後ろに言葉を追加できますか?

    DATE関数の後ろに文字を表示させることは可能でしょうか? 例えば ●年●月●日が締切です。  となるように一つのセルに表示されるようにしたいのですが・・・、=DATE(YEAR($A$3),MONTH($A$3),DAY(A13)+5)&"締切です"と入れてもうまく表示ができません。他に方法があるか探しているのですが見つからなくて困っています。よろしくお願いします。

  • 最新受診日から次の受診日を表示する関数(再度)

    前回回答をいただきましたが、また問題があったので質問します。 【次のの条件で次回受診期限日を表示する関数を、どなたか教えていただけますか? 65歳までは受診した日から3年ごとに受診。 65歳に到達した日から1年以内に受診、受診日より75歳に到達するまでは3年ごとに受診。 75歳に到達した日から1年以内に受診、受診日より1年ごとに受診。 受診日(A3)は最新受診日を常に打ち込んで更新するものとします。 年齢(A1)は関数で生年月日より、リアルタイムで表示。 以下のセルの並びで考えていますが、効率のよい方法もあれば教えてください。 タイプ1) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) または   タイプ2) 年齢(A1) 生年月日(A2) 受診日(A3) 次回受診期限日(A4) 65歳到達日(A6) 75歳到達日(A7)】 という質問をしました。 前回、の回答で 回答1 タイプ2で対応するのがA3に入力する式を省略できる点でベターでしょう。 A1セルには次の式を入力します。 =DATEDIF(A2,TODAY(),"Y") A4セルには次の式を入力します。 =IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A6,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A6,DATE(YEAR(A6)+1,MONTH(A6),DAY(A6)),IF(DATE(YEAR(A3)+3,MONTH(A3),DAY(A3))<=A7,DATE(YEAR(A3)+3,MONTH(A3),DAY(A3)),IF(A3<=A7,DATE(YEAR(A7)+1,MONTH(A7),DAY(A7)),DATE(YEAR(A3)+1,MONTH(A3),DAY(A3))))))-1 A6セルには次の式を入力します。 =DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A1セルを除いてセルの表示形式は日付にします。 A7セルには次の式を入力します。 =DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答と 回答2 タイプ1 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 タイプ2 A1=DATEDIF(A2,TODAY(),"y") A2=生年月日 A3=直近の受信日 A4=(LOOKUP(A1,{0,63,64,65,74},{3,2,1,3,1})+YEAR(A3)&"/"&TEXT(A3,"MM/DD"))-1 A6=DATE(YEAR(A2)+65,MONTH(A2),DAY(A2)) A7=DATE(YEAR(A2)+75,MONTH(A2),DAY(A2)) という回答をいただきましたが、よくみると 生年月日がS21.9.23だとし、近受診日がH21.7.4の場合 回答1 だと 受診期限がH22.7.3 となり 回答2 だと 受診期限がH24.9.22 になります。 実際は、受診して3年後がH24.7.3であり、65歳に到達するのがH23.9.23である為、 H24.9.22が受診期限だと65歳到達から1年以内だが、3年を過ぎてしまいます。 受診期限がH24.7.3となればよいのですが・・・・・ 複雑なので難しいのでしょうか?

  • Excel VBAで「date」関数を使いたい

    VBAを使用して年月日を入力してます。 セルに表示だけなら Year & "/" & Month… とかでもいいんですが、その日付で計算を行いたいんです。 何日足す、とか。。 それでExcelで使える Date(Year,Month,Day) を思い出したんですが、VBAではエラーになってしまいました。 Application.WorksheetFunction.Date(Year, Month, Day) や Application.Date(Year, Month, Day) もダメでした。 どのようにしたら入力した日付で計算が行えるでしょうか?

  • エクセル 関数で空白を入れたセルと空白セルは違う?

    エクセル2010を使っている者です。 「データ」というシートのAL5というセルに IF(ISERROR(INDEX(AL1:AL500,$A$5)),"",INDEX(AL1:AL500,$A$5)) と関数を入れており、その結果、空白が戻り値となり、見た目上、AL5は空白となっています。 しかし、別のシートのあるセル(A1とします)に =IF('データ'!AL5="","",DATE(YEAR('データ '!AL5)-1,MONTH('データ '!AL5),DAY('データ '!AL5))) と関数を入力すると、AL5は空白として扱われていないようで、そのセル(A1)は空白にならずに「H1810.12.31」と表示されてしまいます。 AL5に空白が返されているのなら、それを空白として扱ってもらうようにするにはどうすれば良いですか?

  • エクセル DATE関数について

    初歩的な質問です。エクセル2002のDATE関数で =date(2008,a1,b1) の計算値が参照セルを未入力ですと2007/11/30になります。例えばa1に8,b1に15と入力すれば、2008/8/15 のようにちゃんと表示されるのですが。未入力でもシリアル関数に2008の数値でこのように表示されてしまうのでしょうか。セル未入力の場合、計算値が表示されないようにする方法はあるのでしょうか。

  • エクセル 関数 MONTH

    いつも大変御世話になっております。 WindowsXP環境でエクセル2003を使用しています。 C5セル内に以下文字を入力して「test_201111.txt」を表示しています。 ※YEAR(TODAY()):YYYY / MONTH(TODAY()):MM ="test_"&YEAR(TODAY())&""&MONTH(TODAY())&".txt" これは10~12月は関数箇所は表示されるんですが 1~9月はMONTH(TODAY())自体が頭に"0"がつかないので困っています。 これはもうどうしようもないのでしょうか? 1~9月には頭に0をつけたいのです。 マクロを使ったり、他のセルにYYYYMMを記載してそこから日付を読み込ますようなものは 作成せずに、上記関数だけでどうしても解決したいのですが可能でしょうか? もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • SUZUKA substr関数に関する質問

    SUZUKAを使ってイベントまでの日数をカウントダウンするコンテンツを作っています actionscriptは以下のようになっていて、event_dayから各位の数字を抜き出して、フレームを進めるというものですがsubstr関数が機能しません。Number関数は機能します。event_dayをダイナミックテキストで出力させたらうまくいきました。デジタルで表示させたいのでわれか分かる方がいましたら教えてください。 this.onEnterFrame = function() { //Date オブジェクトを生成 date_obj=new Date(); //今日の年月日を取得 today_year=date_obj.getFullYear(); today_month=date_obj.getMonth(); today_date=date_obj.getDate(); //イベントまでの協定世界時をミリ秒で取得 eventUTC=Date.UTC(2008,11-1,29); //現在までの協定世界時をミリ秒で取得 todayUTC=Date.UTC(today_year,today_month,today_date); //イベントまでの差分を日数に直す event_day=(eventUTC-todayUTC)/1000/60/60/24; //各の抽出 num1=123; num=event_day.substr(0,1); this.hi3.gotoAndStop(Number(event_day.substr(0,1))); this.hi2.gotoAndStop(Number(event_day.substr(1,1))+1); this.hi1.gotoAndStop(Number(event_day.substring(1,2))+1); };

  • シリアル値を月の数値に変換

    エクセルで、計算を簡単にするため、シリアル値を月の数値でデータをもつにはどうしたらいいでしょうか。 通常、エクセルのシリアル値から月の部分を抜き出す場合、Month関数を使用するかと思います。 month関数を使用しても、表示は1、2などの数字に見えますが、実際のデータはシリアル値となっています。 そのため、例えば、a1のセルに3/1というデータがあるときに、 =month(a1) のような関数を作成すれば、3月の3が表示されます。 そして、 =month(a1)+1 としても、データはシリアル値のため4にはならず、表示は3(=3月)のままです。 できれば、表示だけではなく、計算を簡単にするために、データでもシリアル値ではなく、この例でいえば3のように月の数値にしたいのですが、どうしたらいいでしょうか。 よろしくお願いします。

  • month関数で

    エクセルのことでお伺いします。 today関数で今日の日付を表示することは理解しました。 そしてそこから日付の「月」だけを取り出すのにmonth関数があるというのも理解できました。 そこで取り出した月の整数は1~12までなんですがその取り出した関数に対して数字を1引きたいときに単純に関数から-1の計算式を当てはめると明治33年~とおかしくなってしまいました。正しくするにはどうしたらよいですか? 僕がやったのは 今日の場合 A1に=TODAY()関数をいれ、平成17年4月19日を表示させました。 A2に=MONTH(A1)として4を出しました。 そこの関数に=MONTH(A1)-1で4-1で3を出したかったのです。 シリアル値って言うのが引っかかっているみたいですが よく分かっていないので正しく教えていただける方がいましたら宜しくお願いします。

  • ユーザー関数を作成したいのですが

    sqlserver2005の初心者です いままでaccessで標準モジュールにユーザー関数を作成していました Function 年齢(SEI) As Integer Dim SEIDATE, HONSEI, UNSEI, HONY, HONM, UPD Dim MH, DH As Integer MH = 0: DH = 0 SEIDATE = DateValue(SEI) If Not IsDate(SEI) Then Exit Function UPD = DateSerial(Year(Date), Month(Date), Day(Date) + 1) If Val(Mid(SEIDATE, 6, 2)) > Val(Mid(Date, 6, 2)) Or (Val(Mid(SEIDATE, 6, 2)) = Val(Mid(Date, 6, 2)) And Val(Right(SEIDATE, 2)) > Val(Right(Date, 2))) _ Or Right(Date, 5) = "12/31" Then MH = 1 HONY = DateValue(DateSerial(Year(SEIDATE) + MH, Month(Date), Day(UPD))) UNENREI = DateDiff("YYYY", HONY, UPD) 年齢 = UNENREI '-------------SYAIN990112年齢勤続クエリー用------------------ If Val(Right(SEIDATE, 2)) > Val(Right(Date, 2)) Then DH = 1 HONM = DateValue(DateSerial(Year(Date) - MH, Month(SEIDATE) + DH, Day(UPD))) UGETUREI = DateDiff("M", HONM, UPD) HONSEI = DateValue(DateSerial(Year(Date), Month(Date) - DH, Day(SEIDATE))) UHIREI = DateDiff("D", HONSEI, UPD) End Function 宣言がない変数はpublic変数を設定しています ここに例 s33/10/05の生年月日を飛ばして戻り値をえています sqlserverで作成する場合テーブル関数なのかスカラ関数なのかわかりません、 余計な部分ははぶいていただいて簡単でけっこうですのでsqlserverでの記述をおしえていただけないでしょうか

専門家に質問してみよう