プロが教える店舗&オフィスのセキュリティ対策術

次のようなことをエクセルで算出させるには、
どのような式を作ったらよいのでしょうか?
(1) 満15歳になった後の最初の4月1日を平成何年に迎えるのか
(2) 満22歳に達した後の最初の3月31日を平成何年に迎えるのか
エクセル2000を使用しています。
どうぞよろしくお願いします。

A 回答 (4件)

>(1) なぜ100を掛けるのでしょうか?


>(2) 401,1,0や331,1,0は、それぞれ数値に置き換えられたものを
日付に再変換させる為のものなのでしょうか?

別に100でなくても、32以上の数値であればほぼ何でもいいです。ただ、月に100をかけて日付を足すと、わかりやすい数値に(4月1日なら401のように)なるため100にしています。つまり、
IF(MONTH(A1)*100+DAY(A1)>401,1,0),
は日付が4月1日より大きい(4月1日より後)なら1を、小さかったら0を
YEAR(A1)+15 に足します。誕生日が4月1日以前なら生まれた年に15を足せばその年が分かりますが、誕生日が4月1日以降であれば更に1を足さないとうまくいかないためです。


>(2)「e」にどのような意味がありますか?

TEXT 関数は数値の書式設定を指定する関数です。
eは和暦の年号に対する年を返してくれます。
その他は、yy で下2桁の西暦年、yyyyで4桁の西暦年、
gggで年号、mで月、dで日付などです。
=TEXT(TODAY(), "gggee年mm月dd日(aaaa)")
のように指定します。詳しくはヘルプに載っていると思います。
ただし、TEXT関数は文字列で値を返すため、数値にしたい場合はVALUEを使います。
    • good
    • 0

前回のNO2の回答の不完全に気づきました。

済みません訂正します。
誕生日と指定月日の後先のことを考慮しました。
A1セルに生年月日の例S30.2.3、B1のセルに「=YEAR(A1)」(結果値は1955)
C1に4月の4、D1に1日の1、E1に=DATE(B1,C1,D1)
F1に=IF(A1>E1,1,0)(結果値は0)で誕生日より後先を0か1に数値化する、
G1に=DATE(B1+10+F1、C1,D1)」とすると(10年先)、
G1には1965/4/1と表示されました。
10年先を色々指定するなら、前回回答後段のようにセル列(H1)を作って、10の代わりに+H1を入れる。
    • good
    • 0

A1セルに生年月日の例S30.2.3、B1のセルに「=YEAR(A1)」、C1に4月の4、D1に1日の1、E1に「=DATE(B1+10,C1,D1)」とすると、E1に1965/4/1と表示されましたが、これでいいのでしょうか。

半信半疑ですがやってみてください。
また10年後の10を人ごとに相対化するためにF1に10をいれ、
E1に=DATE(B1+F1,C1,D1)と式を入れてもOKでした。
E1の年の表現を昭和とかにするのも、書式・セル・日付でもちろん変えられました。
    • good
    • 0

A1に生年月日が入っている状態なら



=VALUE(TEXT(DATE(YEAR(A1)+15+IF(MONTH(A1)*100+DAY(A1)>401,1,0),4,1),"e"))

のような式で満15歳の方は出ます。
平成○年の○の部分の数字だけを出す式です。
おなじく、満22歳の方は

=VALUE(TEXT(DATE(YEAR(A1)+22+IF(MONTH(A1)*100+DAY(A1)>331,1,0),3,31),"e"))

で出すことができます。

この回答への補足

pesoさん、ありがとうございます!

ところが、なぜちゃんと計算ができるのか、
初心者の私には、その仕組みが分かりません。
いくつか質問をさせていただいていいでしょうか?
(1) なぜ100を掛けるのでしょうか?
(2) 401,1,0や331,1,0は、それぞれ数値に置き換えられたものを
日付に再変換させる為のものなのでしょうか?
(2)「e」にどのような意味がありますか?
お手数ですが、よろしくお願いします。

補足日時:2002/03/02 20:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!