- ベストアンサー
Excelのことで教えてください
Excelを使い、手探りながらも名簿を作成しております。 http://www2.odn.ne.jp/excel/waza/function.html#SEC24 こちらのサイトにある[生年月日から学年を自動表示]を参考にして、生年月日をA列に、学年表示をC列に、年齢表示をD列に入れてあります。 上記のサイトでは卒業したら空白にする場合の解説となっています。 作りたいのは学生(高校まで)だけではなく年齢層が広いものです。 P列に性別を入れました。また、Q列に既婚の場合その意味を記すため既婚と入力しています。 項目は多いですが、P,Q列は印刷の際に表示させたくないために端の列にしてあります。 学生も学生以外もそういう表示をさせたくて、(学生の場合には学年の表示される設定にしてある)C列に、次のような =IF((D2<19),VLOOKUP(DATEDIF(A2,Sheet1!$D$1,"y"),list,2,1),IF(DATEDIF(A2,Sheet1!$D$1,"Y"),IF(P2="男",IF(Q2="既婚","既婚男","未婚男"),IF(P2="女",IF(Q2="既婚","既婚女","未婚女"))),VLOOKUP(DATEDIF(A2,Sheet1!$D$1,"Y"),list,2,TRUE))) という、大変長い式を入れました。 自分としては、年齢を見て、19歳未満は学生表示に、そうでなければ性別と既婚未婚の条件により「既婚男」や「未婚女」という表示に自動で更新されるようにさせたつもりだったのです。ひとまずうまくできたと安心していました。ところが、見直したところ、この式では高校を卒業してから19歳の誕生日がくるまでは高校生の表示になってしまうのです。 大変わかりにくい説明で申し訳ありません。 高校を卒業した人が新年度が始まって誕生日がくるまでの期間も「既婚男」や「未婚女」という表示になるような式は、この場合どこを修正すれば完成できるでしょうか?できれば、関数式で作りたいと思っております。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、参考URLよりD1には以下の式が入っていると思われます。 =DATE(YEAR(TODAY())-(MONTH(TODAY())<=3)*1,4,1) (今年度の4月1日) このとき、学年の判定は「年度始めに何歳になっているか」で行われます。したがってD2<19の部分は、 DATEDIF(A2,Sheet1!$D$1,"y")<18 とする必要があります。 また、後半はもっとすっきり書けます。 =IF((DATEDIF(A2,Sheet1!$D$1,"y")<18), VLOOKUP(DATEDIF(A2,Sheet1!$D$1,"y"),list,2,1),Q2&P2) &はそれぞれのセルの文字列をつなげますので、「既婚」と「男」なら「既婚男」と表示されます。
その他の回答 (1)
- jakotama92
- ベストアンサー率35% (28/78)
D2<19のところを 「誕生日に19年足した日が本日より後の日になったら」に変更する。 =DATE(YEAR(A2)+19,MONTH(A2),DAY(A2)>TODAY()
お礼
ありがとうございます。早速試してみます。
お礼
理屈がわかっていても、自分で式をつくるのに分厚い壁にぶち当たっている状態です。 どうもありがとうございます。何とかなりそうです。