(Excel)日付を比較する方法

 Excelで日付の大小(前後)比較や一致判定をする方法についてです。
 IF関数を使った比較結果表示のほか、COUNTIF関数等での日付条件指定や条件付き書式の例も紹介します。

各関数での比較例

IF/IFS関数の場合

 次の画像ではD列にIF関数を使った数式を入力し、B列の日付とC列の日付がそれぞれ同じかどうかを判定した結果を表示しています。

 D3セル(D5セルまでフィルコピー)

=IF(B3=C3,"〇","×")

 第1引数(条件)を単純に「B3=C3」としています。2つの日付が同じならばこの式の結果はTRUE(真。条件を満たす場合)となり、それに対応する第2引数「〇」が表示されます。そうでなければ式の結果はFALSE(偽。条件を満たさない場合)となり、それに対応する第3引数「✕」が表示されます。



 次の画像は前後の比較の例です。
 A列の日付の方が前(古い日付)なら「〇」を、そうでなければ「✕」を表示させています。

 D3セル(D5セルまでフィルコピー)

=IF(B3<C3,"〇","×")

 第1引数(条件)を単純に「B3<C3」としています。
 このように比較の記号(比較演算子)を変えることでさまざまな比較ができます。
 比較演算子には次のようなものがあり、意味は右側の欄のとおりです。

比較演算子意味
日付A=日付B日付Aと日付Bが同じ
日付A<>日付B日付Aと日付Bが異なる
日付A<日付B日付Aが日付Bより前
日付A<=日付B日付Aと日付Bが同じかAの方が前
日付A>日付B日付Aが日付Bより後
日付A>=日付B日付Aと日付Bが同じかAの方が後



 次の画像は、数式の中で比較対象となる日付を直接指定する例です。

 D3セル(D5セルまでフィルコピー)

=IF(B3=DATEVALUE("2025/8/1"),"〇","×")

 つい「B3=2025/8/1」と記したくなりますが、それだと「2025÷8÷1」つまり数値の253.125とみなされるため誤った結果となります。
 このように日付をダブルクォーテーション(" ")で囲んでさらにDATEVALUE関数で囲むことで比較ができます。



 そして次は、IFS関数を使って3種の前後関係を判定して表示する例です。

 D3セル(D5セルまでフィルコピー)

=IFS(B3<C3,"Aが前でBが後",B3=C3,"同じ",B3>C3,"Aが後でBが前")

 IFS関数は、条件のうち最初にTRUEとなるものに対応する値を表示する関数です。これを利用して3つの条件式と3つの表示文字列を記しています。
 日付を数式内で直接指定する場合の記し方はIF関数と同様です。
 ちなみに、最後の3つ目の条件を単に「TRUE」とする記し方もあります(2つ目までの条件を満たさない場合、3つ目の判定をせず自動的に「Aが後でBが前」を表示させるという意味)。

COUNTIF/SUMIF関数等の場合

 COUNTIF(S)関数やSUMIF(S)関数、その他の~IF(S)関数で、ある日付と比較して条件にあてはまるものを対象とする場合です。構文が異なるだけで日付の指定の仕方は同じですので、COUNTIF関数の例で紹介します。
 次の画像では、B列の日付のうち基準日であるD3セルの日付よりも前の日付をカウントしています。

 D3セル

=COUNTIF(B3:B9,"<"&D3)

 IF関数とは記し方が異なり、比較演算子をダブルクォーテーションで囲み、さらに「&」セル番地とつなげます。ただし一致する日付をカウントする場合は第2引数を単に「D3」とすればOKです。「"="&D3」でもうまくいきます。



 次の画像は数式内で日付を直接指定する例です。

 D3セル

=COUNTIF(B3:B9,"<2025/10/1")

 比較演算子と日付をつなげて記してダブルクォーテーションで囲めばOKです。
 この点はIF関数などより簡単に思えますが、やはりダブルクォーテーションを忘れると誤った結果となりますし、混乱しやすいところです。

FILTER関数の場合

 次の画像ではFILTER関数を使い、B列の日付のうち、基準日であるD3セルの日付よりも前の日付を抽出しています。

 F3セル

=FILTER(B3:B9,B3:B9<D3)

 複数の値から一部を抽出するための関数ですので比較対象として配列(B3:B9)を指定しないと意味をなしませんが、比較の記し方自体はIF関数と同様です。
 日付を数式内で直接指定する場合も同様で「B3:B9<DATEVALUE("2025/10/1")」のようにします。

時刻を無視して比較する方法

 日付と時刻が入力されている場合に、その時刻を無視して日付の部分だけで比較する方法です。
 IF関数を使った比較の例で紹介します。

 D3セル(下方にフィルコピー)

=IF(INT(B3)=INT(C3),"〇","×")

 日付や時刻は内部的には数値(シリアル値)として記録されています。「2025/7/12 12:00:00」は45850.5、「2025/9/12 15:00:00」は45912.625、といった感じです(24時間が1に相当)。
 そこでINT関数を使い小数部分を切り捨てて比較しています。これで時刻に関わらず年月日が同じなら同じ日付と判定されます。
 DAY関数を使ってしまうと「日」だけの比較となり年月の違いも無視されますので注意が必要です。

日付の差(何日違いか)を求める方法

 2つの日付の差が何日なのか(何日違いなのか)を求める方法です。
 これは引き算で簡単に求めることができます。

 D3セル(下方にフィルコピー)

=C3-B3

 引かれる方の日付の方が大きければ(後の日付)ならば結果はプラスになりますし、逆ならマイナスに、同じ日なら0になります。

条件付き書式の場合

 条件付き書式で日付を比較してセルに色付けする例です。
 数式の例示だけでもよさそうですが、念のため操作を含めて解説します。


 ここでは左側の表のB列(B3:B9)の日付をF3の基準日と比較し、B列の日付の方が前だったら(基準日を過ぎていたら)その行に色を付けるものとします。



 B3:B9の範囲を選択して「ホーム」タブから「条件付き書式」→「新しいルール」を選択します。

 


 ダイアログ(小さいウインドウ)が現れますので中段にある「数式を使用して~」を選択します。
 そしてその下に現れる数式欄に次の数式を入力して、「書式」ボタンをクリックします。

 数式欄の数式

=$B3<$F$3

 ついIF関数を使いたくなりますが、イコールの後に比較式だけ入力するのがポイントです。
 色付け範囲(B3:D9)のうち最も上にある日付が入ったセル(B3セル)と、基準日のセル(F3セル)を比較する式とします。
 さらに絶対参照の記号($)を使って参照セルを固定しますが、色付け範囲の行番号の前にはこの記号を付けません。これによりB3:D9のいずれのセルでも、B列の日付とF3セルの日付に比較に基づき色付けされます。



 書式ボタンをクリックするともう1つのダイアログが現れますので、「塗りつぶし」タブを選択して適当な塗りつぶし色を選択します。
 もちろん文字色等の設定も可能です。

 


 OKボタン(2回)で確定すると、条件を満たす行に色が付きました。
 もちろんセルの値の変化に応じて色付けの有無が変わります。