エクセル 日付関数について

このQ&Aのポイント
  • エクセルで生年月日から学年を表示するための式について説明します。
  • 式の例を示して、各部分の意味を解説します。
  • 質問者が疑問に感じている部分についても説明します。
回答を見る
  • ベストアンサー

エクセル 日付関数について

 日付関数について先ほども質問した者ですが、再度よろしくおねがいします。  生年月日から学年(例:小6)を表示する式を組みたく、サイトを検索していたら、下記のような式がありました。 =DATE(YEAR(TODAY())-(MONTH(TODAY())<=3)*1,4,1) これは、今日現在で学年を導く基準年の4月1日を表示する式です。(今日2009/1/4現在ならば2008/4/1と表示する式) この式が理解できません。DATEと後の”,4,1”は理解できます。 YEAR(TODAY())は2009 MONTH(TODAY())は1 (MONTH(TODAY())<=3)の意味は? 多分3月までなら2009-1を表示する? だけど2月になったら2009-2 ではおかしい。 あと*1は構文上必要なのか? 以上雑駁ですが、この式を簡単に説明してくださる方、おねがいします。

  • yy10
  • お礼率48% (48/99)

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

  • ベストアンサー
noname#77845
noname#77845
回答No.1

MONTH(TODAY())<=3 は条件式です。(IF文の中にも使いますよね?) で、MONTH(TODAY())が3以下かどうかを判断しています。 MONTH(TODAY())が3以下だと「TRUE」4以上だと「FALSE」を返します。 これに1を掛けると、3以下の時は1、4以上の時は0になります。 わかります?

yy10
質問者

お礼

 条件式はほとんどif関数しか使ったことがなかったけど、このようなやり方は恥ずかしながら初めて知りました。ありがとうございました。

関連するQ&A

  •  EXCELのIF関数についての質問です。

     EXCELのIF関数についての質問です。  IF関数については、自信がありました。 たとえば、G13をテストの得点だとして、80点よりも高い得点なら合格、さもなければ不合格と表示させてければ、if(G13>80,"合格","不合格")でOKのはずです。  ところが、今日何歳なのかを表示させる場合、G13に生年月日をいれて、 IF(OR(MONTH(TODAY())>MONTH(G13),AND(MONTH(TODAY())=MONTH(G13),DAY(TODAY())>=DAY(G13)))=TRUE,YEAR(TODAY())-YEAR(G13),YEAR(TODAY())-YEAR(G13-1))と引継ぎをうけました。  この中にあるTRUEの意味がわかりません。私の解釈では、「今日の月が誕生月よりも絶対値が大きい」又は「今日の月と誕生月が同じで、今日の日が誕生の日の絶対値と同じか多い」場合、年齢は「今日の年」-「誕生の年」、そうでない場合は年齢は「今日の年」-1-「誕生の年」です。  なので、TRUEはなくてもよいと思い、削除してみましたが、エラーが出ました。  よくわからないので、お手数ですが、教えてください

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

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

  • ★☆EXCEL 有効期限の警告の関数

    本日 H18.2.22 有効期限が、H18.4.1~H18.4.30の人に"期限間近"などの警告をセルに表示させる関数です。 有効期限の2ヶ月前に警告したい。3月は5月が有効期限のセルに警告など。 =IF(DATE(YEAR(D11),MONTH(D11),1)=DATE(YEAR(TODAY()),MONTH(TODAY())+2,1),"期限間近","") しかし、この式ですとH18.3.31までのセルが空欄になってしまいます。 有効期限の2ヶ月前かつ、本日日付からH18.3.31までも警告がでる式にしたいです。 おわかりの方教えてくださーい! よろしくお願いいたします。

  • エクセル 関数 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を記載してそこから日付を読み込ますようなものは 作成せずに、上記関数だけでどうしても解決したいのですが可能でしょうか? もしご存知の方がいらっしゃるようでしたら、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • エクセル関数で一ヶ月後の日付を求めたい

    =DATE(YEAR(AQ2),MONTH(AQ2)+1,DAY(AQ2)) と入れて一ヶ月後の日付は表示されたのですが空のセルは空で返しなさいが入りません…。 どうしたらよいのでしょうか。

  • エクセルで月末を求める計算式

    エクセルで月末を求める計算式 下記の式ですが、月末の日付が正常に表示されません。 どこか間違いがありましたらご指導お願い致します。 =IF(B3="","",DAY(DATE(YEAR(TODAY()),MONTH(TODAY())+1,0)))

  • エクセル VBAの日付計算?について

    現在sheet1にある表をsheet2に転記してゆくVBAを作成しております。sheet1にある日付データセルA1(日のみ)が入っているセルと月初を求めるVBA(DateSerial(Year(Date), Month(Date), 1))を加算して西暦/月/日にしたいのです。 例えば、DateSerial(Year(Date), Month(Date), 1)の答は、2005/05/01になってきます。そこに日付データセルA1が20だとすれば、表示は、2005/05/20となると思います。それをsheet2 セルA1に表示させたいのです。 よろしくお願いします。

  • FileMaker7 の日付関数の使い方

    基準日からX月後の表示はdate(Month;Day:Year)を使用すると思いますが、例えば5月31日の1ヶ月後を6月30日、2月28日を3月31日と表示させる方法を教えて下さい。

  • エクセル関数式を教えてください

    エクセル関数式で分からないことがあります =today()で今日の年月日の表示ができますが 今日の曜日を表示させる関数はありますか?

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

    前回回答をいただきましたが、また問題があったので質問します。 【次のの条件で次回受診期限日を表示する関数を、どなたか教えていただけますか? 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となればよいのですが・・・・・ 複雑なので難しいのでしょうか?