成績管理表には、日付が絡む場面が数多くあります。今回は、2つの日付の差を計算するDATEDIF関数について、使い方と内部のしくみを解説します。シーズン開幕日からの経過日数を求める場面を例に、初心者向けに丁寧に説明します。
DATEDIF関数とは
「開始日」と「終了日」という2つの日付の差を、「年」「月」「日」のいずれかの単位で計算する関数です。成績管理表では「シーズン開幕からの経過日数」のように、2つの日付の間隔を数値で知りたい場面で登場します。
基本の書式はこうです。
=DATEDIF(開始日, 終了日, "単位")
「単位」には主に次の3つを文字列で指定します。
- “Y”:満年数(年単位の差)
- “M”:満月数(月単位の差)
- “D”:日数(日単位の差)
成績管理表での実例:開幕からの経過日数を出す
大阪グーニーズの成績管理表では、「試合日程」シートのB1セルにシーズン開幕日を固定で入力しておき、C列に各試合の日付を記録しているとします。この開幕日を基準に、各試合が「開幕から何日目に行われたか」を計算してみましょう。
| 試合日 | 対戦相手 | 開幕からの経過日数 |
|---|---|---|
| 4/6 | ○○ファイターズ | 0 |
| 4/13 | △△ベアーズ | 7 |
| 4/20 | □□イーグルス | 14 |
| … | … | … |
B1セルを開幕日(4/6)として固定し、C3セル(4/13)までの経過日数を求めたいとき、式はこうなります。
=DATEDIF($B$1, C3, "D")
これで「B1セルの開幕日からC3セルの試合日までの日数差」が計算され、「開幕から7日目の試合」であることが分かります。B1を絶対参照($B$1)にしているのがポイントで、この理由は後ほど「よくあるミス」で説明します。
「試合日程」シートのB1セルなど、決まった1セルにシーズン開幕日を入力しておきます。この後の式は、常にこのセルを開始日として参照します。
開始日のセル(B1)をクリックしたあと、キーボードのF4キーを押すと$B$1のように絶対参照に切り替わります。
終了日には試合日のセル(C3など)を指定し、単位は日数を求めるので"D"とします。Enterキーで確定すると経過日数が表示されます。
開始日が絶対参照になっているため、下の行にコピーしても開始日はずれず、終了日(試合日)だけが各行に合わせて自動的に切り替わります。
しくみを理解する:DATEDIFは何をしているのか
DATEDIFは、単純に日付同士を引き算しているだけではありません。指定した単位に応じて、カレンダー上の実際の進み方を数えています。
- “D”(日数):終了日から開始日を引いた日数そのもの
- “M”(月数):開始日から数えて、満1か月を何回迎えたか(日にちが揃うまでは繰り上がらない)
- “Y”(年数):開始日から数えて、満1年を何回迎えたか
よくあるミス:経過日数がおかしくなる原因
開始日のセル(B1)を相対参照のまま下の行にコピーすると、2行目では「B2」、3行目では「B3」を参照するようになり、開幕日が入っていない空白セルを開始日として計算しようとしてエラーになります。開始日は必ず$B$1のように固定しておきましょう。
DATEDIFは「開始日は終了日より前」であることが前提です。うっかり試合日を開始日、開幕日を終了日として入力してしまうと、#NUM!エラーが表示されます。2つの日付のどちらが先かを確認してから式を組みましょう。
- DATEDIF関数は「2つの日付の差を年・月・日単位で計算する」関数
- 開始日は絶対参照($)で固定するのが基本、下にコピーしてもずれないようにする
- 開始日が終了日より後になっていると
#NUM!エラーになるので、順序に注意する
次回予告
次回のテーマは「WEEKDAY関数」です。日付から曜日番号を取得するしくみを、曜日別の試合数・勝率集計を例に解説していきます。
▶︎ 次回:WEEKDAY関数の使い方としくみ



コメント