- ベストアンサー
IF関数についての質問
IF関数を使って、Aセルに『生年月日が1994年4月17日の子が、16歳になって迎える4月1日(高校に入学する年の4月1日)~22歳になって迎える3月31日(大学を卒業する年の3月31日)の期間に該当すれば、○を表示させる』そして、Bセルに『22歳になって迎える3月31日になるのは平成△年3月31日なのかを表示させる』という関数をいれたいのですが、どのように入れたらいいのでしょうか。困っています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは おそらく多くの人を名前と誕生日で管理する表で、本日の状況を知りたいのだと思います。 この問題をややこしくしているのが「早生まれ」の取り扱いだと思います。 さらに4月1日生まれは前年度扱いになることで、輪をかけてややこしくなります。 表を作ってみます。勝手ですが1行目はタイトル行にしておきます。 ひとつの式で誕生日と入学年度を計算させると、とても式が長くなるので 列を分けて計算するようにしました。 A列に名前、B列に誕生日を入れておき、C列で16歳の誕生日を計算します。 16歳の誕生日は、 =DATE(YEAR($B2)+16,MONTH($B2),DAY($B2)) セルの指定を「$B2」のようにしておくと22歳の誕生日のセルに式をコピーしても指定セルがずれないので便利です。 高校入学年度は次の式でD列に出せます。 数式がややこしくなるので、4月1日だけ別扱いにしてみました。 長くなるので式の中で改行してますが、そのままセルに貼り付けても問題はないと思います。 セルに貼り付けるときは数式バーの中に、またはセルをダブルクリックしてから貼り付けてください。 そうしないと式がばらばらになってしまいます。 =IF(AND(MONTH($B2)>=1,MONTH($B2)<4), DATE(YEAR(C2),4,1), IF(AND(MONTH($B2)=4,DAY($B2)=1), DATE(YEAR(C2),4,1), DATE(YEAR(C2)+1,4,1))) これでセル書式を「gggge"年"」にしておけばよいと思います。 この式の「C2」の部分に誕生日の式を代入すればひとつの式で計算ができますが、 とても長くなって見直す時につらいかもしれません。 上記と同じ要領で22歳の誕生日をE列に =DATE(YEAR(B$2)+22,MONTH($B2),DAY($B2)) 大学卒業年度はF列に =IF(AND(MONTH($B2)>=1,MONTH($B2)<4), DATE(YEAR(E2),3,31), IF(AND(MONTH($B2)=4,DAY($B2)=1), DATE(YEAR(E2),3,31), DATE(YEAR(E2)+1,3,31))) こしておけば判定は簡単です。 本日の状況がどうかは次の式をG列に入れてわかります。 =IF(AND(TODAY()>=D2,TODAY()=<F2),"○","") 入学式や卒業式の当時は「○」を表示しなくても良い場合は式の中の「=」を消してください。 勝手な解釈でやってみたのですが、勘違いをしてるようでしたらご容赦ください。
その他の回答 (4)
- nobu555
- ベストアンサー率45% (158/345)
>16歳になって迎える4月1日(高校に入学する年の4月1日)~22歳になって迎える3月31日(大学を卒業する年の3月31日)の期間に該当すれば 今現在と解釈して、考えました。 >期間に該当すれば =IF(DATE(YEAR(A1)+16,4,1)<=DATE(YEAR(TODAY()),4,1),IF(DATE(YEAR(A1)+22,3,31)>=DATE(YEAR(TODAY())+1,3,31),"○","×"),"×") >『22歳になって迎える3月31日になるのは平成△年3月31日なのかを表示させる』 =TEXT(DATE(YEAR(A1)+22,3,31),"平成e年m月d日") 以上で如何でしょうか。 それぞれの関数については、ヘルプを参照してください。 質問の趣旨と違う場合は、補足をお願いします。
- mshr1962
- ベストアンサー率39% (7417/18945)
>期間に該当すれば、○を表示させる これは今日がですか?それとも別のセルを参照ですか? 仮に A1=誕生日、B1=TODAY()として考えるなら 16歳の3月31日=DATE(YEAR(A1)+16+(TEXT(A1,"mmdd")>="0331"),3,31) 22歳の4月1日=DATE(YEAR(A1)+22+(TEXT(A1,"mmdd")>="0401"),4,1) 該当期間=IF(AND(16歳の3月31日<B1,22歳の4月1日>B1),"○","")
- pamsd
- ベストアンサー率18% (39/209)
Aセルは、 生年月日が1994年4月17日の子が 16歳になって迎える4月1日 から 22歳になって迎える3月31日の期間に該当すればとありますが 1994年4月17日は 16年後から22年後では ありませんので どう考えても ○には なりません。 つまり、基準とする日が 抜けているからです。 基準となる日、たとえば 今日が とかを 入れれば それなりに 計算は できるでしょう。 Bのセルは =TEXT(DATE(YEAR(DATE(1994,4,17)+DATE(22,1,1)),3,31),"gggge年mm月dd日") でいいかな。
- suekun
- ベストアンサー率25% (369/1454)
読解力が乏しいので、質問の意味が飲み込めません。 >『生年月日が1994年4月17日の子が とありますが、対象はこの生年月日の子だけなのでしょうか? >・・・年の3月31日)の期間に該当すれば とありますが、何が該当すれば なのでしょうか? 生年月日自体は該当しませんよね? >平成△年3月31日なのかを表示させる これって対象が決まっていれば関数処理しなくても 計算すれば出ると思うのですが・・・? もう少し中身を詳しくお知らせ下さい。
お礼
分かりにくい質問ですみません。NO.4さんの解釈どおりです。 回答してくださったみなさんのお蔭で、解決しました!!(どうしてこの関数なのかは不明なままですが・・・笑) ありがとうございました☆
補足
16歳になって迎える4月1日(高校に入学する年の4月1日)~22歳になって迎える3月31日(大学を卒業する年の3月31日)その期間に該当する者のみ、『22歳になって迎える3月31日になるのは平成△年3月31日なのかを表示させる』という意味でした。分かりにくくてすみません。