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

ExcelでA1に生年月日が入っていて
「閏年生まれの場合+1、それ以外は+2」
としたいのですがどの様な関数との組み合わせがよろしいのでしょうか?

B1セルに
=IF(AND(16163<=A1,A1<=16527),A1+1,IF(AND(17624<=A1,A1<=17988),A1+1,IF(AND(19085<=A1,A1<=19449),A1+1,IF(AND(20546<=A1,A1<=20910),A1+1,A1+2))))
ですとIFの限界が来たときにエラーになってしまいます。
過去質問にも似たようなものがありましたが、この場合でもMATCHやVLOOKUPを使うと上手くいくのでしょうか?
よろしくお願いいたします。

A 回答 (6件)

うるう年の条件は、


1.西暦年が4で割り切れる年は閏年
2.ただし、西暦年が100で割り切れる年は平年
3.ただし、西暦年が400で割り切れる年は閏年
ですので、例外条件になる3.2.1.の順にIF関数で判定すれば良いかと。
=IF(条件3, うるう年, IF(条件2, 平年, IF(条件1, うるう年, 平年)))

割り切れる/割り切れないの判定には、一般的には剰余を求める関数MODを使用し、割り算の余りがゼロか否かで判定します。
    • good
    • 0

理屈は同じく「2月29日って指定して3月1日になったら非閏年」って


やつですが、

=month(date(year(A1),2,29))-1

day関数ではなくmonth関数を使うと、if関数や比較演算子が必要あ
りません。
    • good
    • 0

=IF(DAY(DATE(YEAR(A1),2,29))=1,2,1)



他の方と同様ですが・・・。
2/29日を指定すると、閏年以外は3/1になります。
    • good
    • 0

1999/1/1_2 <-- =1+ABS(TEXT(DATE(YEAR(A1),2,29),"d")="1")


2000/1/1_1
2001/1/1_2
2002/1/1_2
2003/1/1_2
2004/1/1_1

エクセルは一度も操作したことがない門外漢ですが・・・。
その年の2月29日が3月1日でなければ閏年かと思います。
ですから、1に1を足すか0かで・・・。
    • good
    • 0

うるう年を計算で求めなくてもエクセルは日付をサポートしていますので、3月1日の前日が29であればうるう年、そうでなければ平年とわかります。


したがって、閏年生まれの場合+1、それ以外は+2ということは
うるう年なら1、平年なら0を2から引いたものをA1に足せばいいわけですよね?

=A1+2-(DAY(DATE(YEAR(A1),3,0))=29)
    • good
    • 0

EXCELのサポートサイトに以下の記述がありました。


http://support.microsoft.com/kb/214019/ja

それを基に作成すると以下のようになるのではないでしょうか。
=IF(OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)<>0)),A1+1,A1+2)
    • good
    • 0

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