• ベストアンサー

どうしてもできません・・・

様々な生年月日の人を対象に、セルAには『高校に入学する年の4月1日(16歳の4月1日)~大学を卒業する年の3月31日(22歳の3月31日)、その期間に該当すれば○を表示』させ、該当者のみセルBには『22歳の3月31日(大学卒業する年)になるのはH△.3.31なのかを表示』という関数をいれたいのですが… 例えば、S62.3.17生まれの人が22歳の3月31日になるのは、H21.3.31になります。しかし一番困っているのが4.1生まれと4.2生まれの人のことです。この計算は『年度』を対象に考えたいのです。S62.3.17生まれの人の同級生は、S61.4.2~S62.4.1です。このことを考慮して上記の関数をいれたいのです。検証対象は当日です。どうか教えてください。

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

  • ベストアンサー
  • Bubuca
  • ベストアンサー率59% (532/898)
回答No.2

こんにちは I6に誕生日が入っていて、A列で判定をしたいのですね。 行を揃えたいので、A6にこのような式をいれてみてはどうでしょうか。 =IF(I6<=DATE(YEAR(I6),4,1),IF(AND(YEAR(I6)+16<=YEAR(TODAY()),YEAR(I6)+22>=YEAR(TODAY())),"○",""),IF(AND(YEAR(I6)+17<=YEAR(TODAY()),YEAR(I6)+23>=YEAR(TODAY())),"○","")) 途中で改行を入れずに書いてみました。 誕生日がその年の4月1日以前ならば「早生まれ」と判定しています。 早生まれならば、誕生年に16を加えたものと22を加えたものの間に「今日」があるか、 早生まれでなければ、誕生年に17を加えたものと23を加えたものの間に「今日」があるかを判定しています。 「今日」が範囲内にあれば「○」を表示、そうでなければ何も表示しません。 次に大学卒業年度の表示ですが、作業列がないので、もう一度早生まれの判定をしなくてはいけません。 B列に表示したいとのことですから、行を揃えてB6に表示させてみましょう。 =IF(A6="○",IF(I6<=DATE(YEAR(I6),4,1),DATE(YEAR(I6)+22,3,31),DATE(YEAR(I6)+23,3,31)),"") A6に「○」が表示されていて早生まれならば誕生年に22を加えた3月31日を、 早生まれでなければ誕生年に23を加えた3月31日を計算します。 「○」が表示されていなければ何も表示しません。 ここで表示形式を「gggge"年度"」としておけば「平成22年度」などと表示されます。 頭の中で「昭和63年生まれは...」と考えていたら、なんだか年齢や年度が正しいのかどうかわからなくなってきてしまったので、数字が不正確になっているかもしれません。 その場合はご容赦くださって、適当に訂正してください。 また、表の概要がわからないので、noa8998さんの作りたい表に添っているかどうかもちょっと自信がありません。 前回は勝手に作業列を作成して表にしてみましたが、それではまずかったようですね。すみませんでした。

noa8998
質問者

お礼

前回といい、今回も丁寧に教えてくださいましてありがとうございます!!とても助かりました★ エクセル初心者なもので・・・また宜しくお願いします。

その他の回答 (1)

  • Shimalis
  • ベストアンサー率64% (11/17)
回答No.1

1つの数式で表示させようとするとごちゃごちゃになるので、作業領域を追加して段階的に求めると分かりやすくなります。 まず、作業領域として、以下の3つを追加します。 (【生年月日】:A1セル、【フラグ】:B1セル に入力されている場合) 【フラグ】 「 =IF(MONTH(A1)<4,1,IF(MONTH(A1)>4,2,IF(DAY(A1)=1,1,2))) 」 生年月日の月日がが4/1以前の場合は1、4/2以降の場合は2を出力する関数です。 【高校に入学する年の4月1日】 「 =DATE(YEAR(A1)+IF(B1=1,15,16),4,1) 」 【大学を卒業する年の3月31日】 「 =DATE(YEAR(A1)+IF(B1=1,22,23),4,1) 」 あとは、上記の2,3番目の日付と当日の日付の大小を比較し、該当する場合は上記の3番目の日付を表示するようにすればよろしいかと思います。

noa8998
質問者

お礼

ご回答ありがとうございました★

noa8998
質問者

補足

=IF(I6<=DATE(YEAR(I6),4,1),IF((DATE(YEAR(I6)+16,4,1)<=TODAY())*(DATE(YEAR(I6)+23,4,0)>=TODAY()),IF(I6<=DATE(YEAR(I6),4,0),DATE(YEAR(I6)+22,4,0),DATE(YEAR(I6)+23,4,0))," "),IF((DATE(YEAR(I6)+16,4,1)<=TODAY())*(DATE(YEAR(I6)+23,4,0)>=TODAY()),IF(I6<=DATE(YEAR(I6),4,0),DATE(YEAR(I6)+22,4,0),DATE(YEAR(I6)+23,4,0))," ")) I6に生年月日を入れてます。これではどうでしょうか?

関連するQ&A