Excelでうるう年を判定する論理式とIF関数処理!コピペで使えるLET関数を使った効率的な方法
Excelを使って日付データからうるう年(閏年)を判定する方法を学びます。さらに、LET関数を用いて高速かつ効率的に計算処理を行うテクニックも解説します。
うるう年判定の基本論理 概要
うるう年を判定するには、その年が4で割り切れることを確認する必要があります。ただし、100で割り切れる年はうるう年ではありませんが、400で割り切れる年はうるう年となります。
このルールを基に、Excelの年をYEAR関数、MOD関数、OR関数、AND関数を使ってうるう年を判定する論理式を作成することができます。
うるう年判定の論理式
この記事では、Excelでうるう年かどうかを調査する論理式の作成方法を紹介します。論理式はIF関数の第1引数や条件付き書式(数式)、入力規則(ユーザー設定)へ使用できます。
値が入力されているセルをA2としますが、この部分はあなたが調査する対象セルへ置き換えてください。
日付データからうるう年を判定する 1(基本)
A2に「2018/1/7」のような日付データが入力されている場合、この年がうるう年かどうかを調べる論理式は以下のようになります。
=OR(AND(MOD(YEAR(A2), 4) = 0, MOD(YEAR(A2), 100) <> 0), MOD(YEAR(A2), 400) = 0)
IF関数で真の場合に「うるう年」と表示させる場合には以下の式になります。
=IF(OR(AND(MOD(YEAR(A2), 4) = 0, MOD(YEAR(A2), 100) <> 0), MOD(YEAR(A2), 400) = 0),"うるう年","非うるう年")
この式は以下のように動作します。
- YEAR(A2)でA2セルの年を取得します。
- その年が4で割り切れ、かつ100で割り切れない場合、または400で割り切れる場合に、うるう年と判定します。
- それ以外の場合は非うるう年と判定します。
この式を使用すると、任意の日付に対するうるう年の判定が行えます。以下にこの論理式の各ステップを詳細に説明します。
ステップ1: 年の抽出
最初に、YEAR(A2)
関数を使用してA2セルに入力された日付から年を抽出します。
ステップ2: うるう年の条件の確認
うるう年の条件は以下の2つの条件のうち1つを満たす必要があります:
- その年が4で割り切れ、かつ100で割り切れない。
- その年が400で割り切れる。
これらの条件をMOD関数を使用して論理式で表現すると以下のようになります。MOD関数は第1引数を第2引数で割った際の余りを返します。
AND(MOD(YEAR(A2), 4) = 0, MOD(YEAR(A2), 100) <> 0)
MOD(YEAR(A2), 400) = 0
ここで、MOD関数は第1引数を第2引数で除算した余りを返します。例えば、MOD(YEAR(A2), 4)
はA2セルの年を4で割った余りを返します。
ステップ3: OR関数でうるう年の条件を組み合わせる
次に、上記の2つの条件をOR
関数を使用して組み合わせます。これにより、2つの条件のうち1つでも真であれば真を返す論理式を作成します。
OR(AND(MOD(YEAR(A2), 4) = 0, MOD(YEAR(A2), 100) <> 0), MOD(YEAR(A2), 400) = 0)
ステップ4: IF関数でうるう年の判定を行う
最後に、IF
関数を使用してうるう年の判定を行います。IF関数の第1引数にはOR関数で作成した論理式を指定します。第2引数には「うるう年」の文字列を、第3引数には「非うるう年」の文字列を指定します。
これにより、うるう年の条件を満たす場合は「うるう年」を、満たさない場合は「非うるう年」を返す式が完成します。
日付データからうるう年を判定する 2(LET関数)
LET関数を使うと、セル参照(A2への参照)が1度で済みます。ただしOffice 2019以前のバージョンでは使用できません。
=LET(year, YEAR(A2), OR(AND(MOD(year, 4) = 0, MOD(year, 100) <> 0), MOD(year, 400) = 0))
IF関数で真の場合に「うるう年」と表示させる場合には以下の式になります。
=IF(LET(year, YEAR(A2), OR(AND(MOD(year, 4) = 0, MOD(year, 100) <> 0), MOD(year, 400) = 0)),"うるう年,","非うるう年")
数値データからうるう年を判定する 1(基本)
A2に「2018」のような西暦を意味する数値データが入力されている場合、この年がうるう年かどうかを調べる論理式は以下のようになります。
=OR(AND(MOD(A2, 4) = 0, MOD(A2, 100) <> 0), MOD(A2, 400) = 0)
IF関数で真の場合に「うるう年」と表示させる場合には以下の式になります。
=IF(OR(AND(MOD(YEAR(A2), 4) = 0, MOD(YEAR(A2), 100) <> 0), MOD(YEAR(A2), 400) = 0),"うるう年","非うるう年")
数値データからうるう年を判定する 2(LET関数)
LET関数を使うと、セル参照(A2への参照)が1度で済みます。ただしOffice 2019以前のバージョンでは使用できません。
=LET(year, A2, OR(AND(MOD(year, 4) = 0, MOD(year, 100) <> 0), MOD(year, 400) = 0))
IF関数で真の場合に「うるう年」と表示させる場合には以下の式になります。
=IF(LET(year, A2, OR(AND(MOD(year, 4) = 0, MOD(year, 100) <> 0), MOD(year, 400) = 0)),"うるう年","非うるう年")
論理の説明(確認と詳細)
うるう年を判定する論理は、以下の条件を満たす年をうるう年とします:
- 年が4で割り切れる
- 年が100で割り切れない、または400で割り切れる
これをExcelの関数を使って表現すると、余りを調べるMOD関数とAND関数、OR関数を組み合わせた複雑な論理式になります。この論理式を理解することで、任意の日付や年からうるう年を判定できます。
また、LET関数を使用して年のデータを変数に格納することで、計算速度の向上と式の簡略化が図れます。これにより、セルへの参照が1度だけになり、計算が高速化されます。
注意点
この計算処理を使用する際には、以下の点に注意する必要があります:
- 日付データと数値データでは、異なる計算式を使用する必要があります。
- 年を直接数値として入力する場合、正しい数値が入力されていることを確認する必要があります。
また、この計算式は条件付き書式や入力規則としても利用可能です。これにより、Excelシートにさらなる機能を追加することができます。
コメント