年がうるう年かどうかの判断(Microsoft Excel)
ボブは、利息と複利計算日数を計算するために、特定の日付の年がうるう年であるかどうかを簡単に判断する方法があるかどうか疑問に思います。
年が4で割り切れる場合、それはうるう年であることは誰もが知っていますよね?まあ、実際には、それは間違っています。したがって、次のように単純に年数を4で割って、うるう年かどうかを判断することはできません。
=IF(MOD(YEAR(A1), 4) = 0, "Leap", "Regular")
この数式は、今世紀内のすべての日付(2000年から2099年)で機能しますが、その範囲外では確実に機能しません。その理由は、うるう年のテストは「4で割り切れる」だけではないからです。年が1世紀(100で割り切れる)の場合、400で割り切れる場合にのみうるう年になります。したがって、2000年はうるう年ですが、2100年はうるう年ではありません。
日付がうるう年内に発生するかどうかを防弾で判断する方法が必要な場合は、数式をより複雑にする必要があります。
=IF(OR(AND(MOD(YEAR(A1),4)=0,MOD(YEAR(A1),100)>0), MOD(YEAR(A1),400)=0),"Leap","Regular")
これは単一の式であることに注意してください。ここでは2行で表示されているため、画面に完全に収まります。この式は、日付がうるう年に含まれるかどうかを判断するために必要な3つの条件すべてをテストします。
もちろん、別のアプローチは、特定の年に2月29日が含まれているかどうかを単純に把握することです。このタスクを実行するために使用できる式はいくつもあります:
=IF(DAY(EOMONTH("1Jan"&YEAR(A1),1))=29, "Leap", "Regular") =IF(MONTH(DATE(YEAR(A1),2,29))=2, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),2,29))=29, "Leap", "Regular") =IF(DAY(DATE(YEAR(A1),3,0))=29, "Leap", "Regular")
これまでに説明した方法はいずれも、1つの例外を除いて、Excelでサポートされているすべての日付で正常に機能します。セルA1の日付が1900年の場合、DATE関数(上記の最後の3つ)を使用する関数は機能しません。うるう年ではない場合でも、常に1900がうるう年であることが返されます。 (興味深いことに、EOMONTH関数は、この点でDATE関数と同じ問題を示しません。)
Excelでサポートされている日付より前の日付(1900年1月1日より前)を操作する必要がある場合は、Excelの日付から年を取得するのではなく、年を直接操作する必要があります。セルA1に1年しか含まれていない場合、3つのテスト式のバリエーションは問題なく機能します。
=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)>0),MOD(A1,400)=0),"Leap","Regular")
日付をテストするユーザー定義関数を作成することもできます。
このアプローチは、セルに日付値が含まれているか、日付のテキスト値が含まれているかに関係なく、問題なく機能します。 (サポートされていない日付値(1896年1月1日など)をセルに入力すると、Excelはそのエントリを日付として解析するのではなく、テキスト値として扱います。)次の例は、でサポートされているすべての日付で正しく機能します。 100年から9999年の範囲にあるVBA:
Function IsLeap1(c As Range) As Boolean YearNo = Year(c.Value) If YearNo Mod 100 = 0 Then IsLeap1 = ((YearNo \ 100) Mod 4 = 0) Else IsLeap1 = (YearNo Mod 4 = 0) End If End Function
ワークシートで関数を使用するには、次のような数式を入力します。
=IF(IsLeap1(A1),"Leap", "Regular")
次の1行のマクロは、問題の年に2月29日があるかどうかを判断するトリックを使用して機能します。
Function IsLeap2(c As Range) IsLeap2 = IsDate("2/29/" & Year(c.Value)) End Function
マクロは、ワークシートで前のマクロと同じ方法で参照されます:
=IF(IsLeap2(A1),"Leap", "Regular")
日付がうるう年であるかどうかを判断するためのより創造的な方法が必要な場合は、次の記事を確認してください:
http://chandoo.org/wp/2012/02/29/check-leap-year-using-excel/
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(9978)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。