目次
このチュートリアルでは、ExcelのDATEDIF関数の簡単な説明と、日付を比較して日、週、月、年の差を計算する方法を示す数式の例を紹介します。
この数週間、Excelで日付や時刻を扱うほぼすべての側面について調査しました。 このブログシリーズをご覧になっている方は、ワークシートへの日付の挿入や書式の設定、平日、週、月、年の計算方法、そして日付の加算と減算についてすでにご存じだと思います。
このチュートリアルでは、Excelで日付の差を計算することに焦点を当て、2つの日付の間の日数、週、月、年をカウントするさまざまな方法を学びます。
Excelで2つの日付の差を簡単に検索する
結果を年、月、週、または日単位で既成の数式として取得する
続きを読む数回のクリックで日付の追加と減算が可能
日付と時刻の計算式の作成を専門家に任せる
続きを読むExcelで年齢を即座に計算する
そして、カスタムメイドのフォーミュラを手に入れる
続きを読むExcel DATEDIF関数 - 日付の違いを取得する
DATEDIF関数は、その名前が示すように、2つの日付の差を計算するためのものです。
DATEDIF は、Excel の数少ない文書化されていない関数の一つで、「隠されている」ので 式 そのため、ExcelのDATEDIFを数式で使えるようにするためには、その完全な構文を知っておくことが重要なのです。
Excel DATEDIF関数 - シンタックス
ExcelのDATEDIF関数の構文は以下のとおりです。
DATEDIF(start_date, end_date, unit)3つの引数はすべて必要です。
開始日 - は、計算したい期間の最初の日付です。
終了日 - は、期間の終了日です。
単位 - 2つの日付の差を計算するときに使用する時間単位を指定します。 異なる単位を指定することにより、DATEDIF関数は日付の差を日、月、年で返すことができます。 全体で6つの単位が利用可能で、以下の表で説明されています。
単位 | 意味 | 説明 |
Y | 年 | 開始日と終了日の間の完全な年数。 |
M | 月数 | 日付と日付の間の完全な月数。 |
D | 日数 | 開始日と終了日の間の日数。 |
MD | 年・月を除く日数 | 月や年を無視した日数での日付差。 |
ワイディー | 年を除く日数 | 年ではなく、日単位での日付の違い。 |
ワイエム | 日および年を除く月 | 日、年を無視した月単位での日付差。 |
エクセルDATEDIF式
Excelで2つの日付の差を求めるには、DATEDIF関数に開始日と終了日を指定します。 これは、Excelが指定された日付を理解し正しく解釈できるのであれば、様々な方法で行うことができます。
セルリファレンス
ExcelでDATEDIF式を作成する最も簡単な方法は、2つの有効な日付を別々のセルに入力し、それらのセルを参照することです。 たとえば、次の式は、セルA1とB1の日付間の日数をカウントします。
=DATEDIF(A1, B1, "d")
文字列
Excelは、「1-Jan-2023」、「1/1/2023」、「2023年1月1日」など、さまざまなテキスト形式の日付を理解します。 引用符で囲まれたテキスト文字列としての日付は、数式の引数に直接入力できます。たとえば、次のようにして、指定した日付間の月数を計算することができます。
=DATEDIF("1/1/2023", "12/31/2025", "m")
シリアルナンバー
Microsoft Excelでは、1900年1月1日から始まる通し番号で各日付を管理しているため、日付に対応した番号を使用します。 サポートされていますが、日付の番号付けはコンピュータシステムによって異なるため、この方法は信頼できません。 1900年の日付システムでは、以下の式で2つの日付、2023年1月1日と2025年12月31日までの年数を計算することができます。
=DATEDIF(44927, 46022, "y")
その他の機能の結果
今日から2025年5月20日までの日数を求めるには、このような計算式になります。
=DATEDIF(TODAY(), "5/20/2025", "d")
注意:ExcelのDATEDIF関数は、終了日が開始日より大きい場合、#NUM!エラーを返します。
以上の内容で、基本的なことが理解できたと思います。 そして次に、ExcelのDATEDIF関数を使って、ワークシートの日付を比較し、その差を返す方法を説明します。
Excelで2つの日付の間の日数を取得する方法
DATEDIFの引数を注意深く見ていると、日付と日付の間の日数を数える単位が3種類あることに気づきます。 どれを使うかは、まさにあなたのニーズ次第です。
例1.ExcelのDATEDIF式で日付の差を日数で計算する場合
セルA2に開始日、セルB2に終了日があり、Excelが日付の差を日数で返すとします。 単純なDATEDIF式がうまく機能します。
=DATEDIF(A2, B2, "d")
ただし、引数start_dateの値がend_dateより小さいことが条件です。 開始日が終了日より大きい場合、ExcelのDATEDIF関数は5行目のように#NUMエラーを返します。
もし、日数の差をプラスまたはマイナスで返す計算式をお探しなら、単純に一方の日付をもう一方の日付から直接引いてみてください。
=B2-A2
詳細や計算式の例については、「Excelで日付を引く方法」をご覧ください。
例2.Excelで年を無視して日数を数える
異なる年に属する2つの日付リストがあり、それらが同じ年であるかのように日付間の日数を計算したいとします。 これを行うには、「YD」単位のDATEDIF数式を使用します。
=DATEDIF(A2, B2, "yd")
ExcelのDATEDIF関数で、年だけでなく蛾も無視したい場合は、「md」単位を使用します。 この場合、2つの日付間の日数を、同じ月、同じ年であるかのように計算することになります。
=DATEDIF(A2, B2, "md")
下のスクリーンショットはその結果を示したものですが、上のスクリーンショットと比較することで、その違いをよりよく理解することができます。
ヒント:数を求めるには 営業日 2つの日付の間にある場合は、NETWORKDAYS または NETWORKDAYS.INTL 関数を使用してください。
週単位での日付差の計算方法
お気づきのように、ExcelのDATEDIF関数には、週単位の日付差を計算する特別な単位がありません。 しかし、簡単に回避することができます。
2つの日付の間に何週間あるか調べるには、DATEDIF関数に「D」単位を付けて日数の差を返し、その結果を7で割ればよい。
の数を得るために まいしゅう この関数では、常に数値をゼロに丸めることができます。
=ROUNDDOWN((DATEDIF(A2, B2, "d")) / 7), 0)
ここで、A2 は計算する期間の開始日、B2 は終了日です。
Excelで2つの日付の間の月数を計算する方法
ExcelのDATEDIF関数は、日数の計算と同様に、指定した2つの日付の間の月数を計算することができます。 指定した単位によって、計算式は異なる結果を生成します。
例1.2つの日付の間の完全な月数を計算する(DATEDIF)
日付と日付の間の整数月数を数えるには、DATEDIF関数を「M」単位で使用します。 たとえば、次の式は、A2(開始日)とB2(終了日)の日付を比較して、その差を月数で返します。
=DATEDIF(A2, B2, "m")
注:DATEDIF式で月を正しく計算するには、終了日が開始日より常に大きい必要があります。そうでない場合は、#NUMエラーが返されます。
このようなエラーを避けるために、Excelに常に古い日付を開始日、新しい日付を終了日として認識させることができます。 これを行うには、簡単な論理テストを追加してください。
=IF(B2>A2, DATEDIF(A2,B2, "m"), DATEDIF(B2,A2, "m"))
例2.2つの日付の間の月数を年を無視して取得する(DATEDIF)
日付と日付の間の月数を同じ年であるかのようにカウントするには、単位引数に「YM」と入力します。
=DATEDIF(A2, B2, "ym")
この式は、終了日が開始日より小さい6行目でもエラーを返します。 もし、あなたのデータセットにそのような日付が含まれている場合、次の例で解決策を見つけることができます。
例3:2つの日付の間の月数を計算する(MONTH関数)
Excelで2つの日付の間の月数を計算するには、MONTH関数、より正確にはMONTH関数とYEAR関数を組み合わせて使用する方法があります。
=(年(b2)-年(a2))*12 + 月(b2)-月(a2)
もちろん、この数式はDATEDIFほど透過的ではなく、ロジックを理解するのに時間がかかりますが、DATEDIF関数とは異なり、任意の2つの日付を比較し、月単位の差を正または負の値で返すことができます。
YEAR/MONTH式は、6行目の開始日が終了日よりも新しい月を計算しても問題がないことに注意してください。これは、アナログのDATEDIF式が失敗するシナリオです。
DATEDIFとYEAR/MONTHは動作原理が異なるため、同じ結果が得られるとは限りません。 ExcelのDATEDIF関数は、YEAR/MONTHが何日分であるかを返します。 れきげつ が日付の間にあるのに対し、YEAR/MONTH 式は月の数を操作します。
例えば、上のスクリーンショットの7行目では、日付と日付の間の完全な暦月がまだ経過していないため、DATEDIF式は0を返し、日付が異なる月に属しているためYEAR/MONTHは1を返します。
例4.年を無視して2つの日付の間の月を数える(MONTH関数)
すべての日付が同じ年である場合、または年を無視して日付間の月を計算したい場合は、MONTH関数で各日付から月を取得し、一方の月を他方の月から差し引くことができます。
=月(b2) - 月(a2)
この数式は、次のスクリーンショットに示すように、「YM」単位のExcel DATEDIFと同様に機能します。
しかし、2つの計算式が返す結果は数行違っています。
- 4行目:終了日が開始日よりも小さいため、DATEDIFはエラーを返し、MONTH-MONTHは負の値を生成します。
- 6行目: 日付は異なる月ですが、実際の日付の差はわずか1日です。 DATEDIFは2つの日付の間の月全体を計算するため0を返します。 MONTH-MONTHは日数と年を無視して月の数を互いに引くため、1を返します。
Excelで2つの日付の間の年を計算する方法
前の例で、2つの日付の間の月と日を計算したなら、Excelで年を計算する公式を簡単に導き出すことができます。 次の例は、公式が正しいかどうかを確認するのに役立ちます:)。
例1:2つの日付の間の完全な年数を計算する(DATEDIF関数)
2つの日付の間の完全な暦年の数を調べるには、昔からよく使われているDATEDIFを "Y "の単位で使用します。
=DATEDIF(A2,B2, "y")
これは、開始日と終了日の間の暦年数がゼロであるためです。 また、開始日が終了日より新しい7行目では、#NUM!エラーが発生しても不思議ではありませんね。
例2:2つの日付の間の年数を計算する(YEAR関数)
Excelで年を計算する別の方法として、YEAR関数があります。 MONTH式と同様に、各日付から年を抽出し、その年を互いに引き算します。
=年(b2) - 年(a2)
次のスクリーンショットでは、DATEDIF関数とYEAR関数が返す結果を比較することができます。
ほとんどの場合、その以外は同じ結果になります。
- DATEDIF関数は完全な暦年を計算しますが、YEAR式は単純に1年分を差し引きます。 6行目にその違いを示しました。
- DATEDIF式は開始日が終了日より大きいとエラーを返し、YEAR関数は7行目のように負の値を返します。
日、月、年単位で日付の差を取得する方法
2つの日付の間の完全な年、月、日の数を1つの数式で数えるには、3つのDATEDIF関数を連結するだけです。
=DATEDIF(A2, B2, "y") &" 年, "&DATEDIF(A2, B2, "ym") &" 月, " &DATEDIF(A2, B2, "md") &" 日".
ゼロ値を表示したくない場合は、次のように各DATEDIFをIF関数でくくることができます。
=IF(DATEDIF(A2,B2, "y")=0, "", DATEDIF(A2,B2, "y") & " 年 ") & IF(DATEDIF(A2,B2, "ym")=0,", DATEDIF(A2,B2, "ym") & " 月 ") & IF(DATEDIF(A2,B2, "md")=0, "", DATEDIF(A2, B2, "md") & " 日 ")
次のスクリーンショットに示すように、数式は0以外の要素のみを表示します。
日付の差を日数で取得する他の方法については、「Excelで日付からまたは日付までの日数を計算する方法」を参照してください。
Excelで年齢を計算するためのDATEDIFの公式
実は、生年月日から誰かの年齢を計算するのは、Excelの日付差計算の特殊なケースで、終了日が今日の日付になります。 そこで、日付間の年数を返す「Y」単位の通常のDATEDIF式を使い、end_date引数にTODAY()関数を入力するのです。
=DATEDIF(A2, TODAY(), "y")
ここで、A2 は生年月日である。
上の式は完全な年数を計算していますが、年、月、日を含む正確な年齢を知りたい場合は、前の例でやったように3つのDATEDIF関数を連結してください。
=DATEDIF(B2,TODAY(), "y") & " 年, " & DATEDIF(B2,TODAY(), "ym") & " 月, " & DATEDIF(B2,TODAY(), "md") & " 日数"
そして、次のような結果を得ることができます。
生年月日を年齢に変換する他の方法については、「生年月日から年齢を計算する方法」をご覧ください。
Date & Time Wizard - Excelで日付の違いによる計算式を作成する簡単な方法
このチュートリアルの最初の部分で示したように、ExcelのDATEDIFは、さまざまな用途に適した非常に汎用性の高い関数です。 しかし、重大な欠点があります。Microsoftによって文書化されていないため、関数リストにDATEDIFがなく、セルに数式を入力し始めたときに、引数のツールチップも表示されません。 でDATEDIF関数を使えるようになるには、次のようにします。ワークシートに入力する場合、その構文を覚え、すべての引数を手入力しなければなりません。
Ultimate Suite for Excelは、これを根本的に変え、次のような機能を提供します。 日付・時刻ウィザード どんな日付の違いでも、すぐに計算できるようになります。
- 数式を挿入するセルを選択します。
- に行ってみてください。 Ablebits Tools tab> 日付と時刻 をクリックします。 日付・時刻ウィザード ボタンをクリックします。
- をクリックします。 日付 1 ボックス(または 折りたたみダイアログ ボタンでボックスの右側に移動)、最初の日付が入ったセルを選択します。
- をクリックします。 日付 2 ボックスを開き、2つ目の日付のあるセルを選択します。
- から、希望する単位または単位の組み合わせを選択します。 の違い このとき、ウィザードではボックス内の結果とセル内の数式をプレビューすることができます。
- プレビューでよろしければ、[OK]をクリックします。 挿入式 ボタンを押すか、さもなければ別のユニットを試してみてください。
例えば、このように 日数 Excelで2つの日付の間を表示します。
選択したセルに数式が挿入されたら、通常通りダブルクリックするか、フィルハンドルをドラッグして他のセルにコピーします。 その結果、次のようになります。
結果を最適な形で表示するために、さらにいくつかの追加オプションが用意されています。
- 除外年 または 月を除く 計算から
- 表示する、しない テキストラベル のように 日間 , つき , 週間 そして 歳月 .
- 表示する、しない ゼロ個 .
- 結果を返す 負の値として 日付1(開始日)が日付2(終了日)より大きい場合。
例として、2つの日付の差を、ゼロ単位を無視して、年、月、週、日で求めてみましょう。
Date & Time Formula Wizardを使用するメリット
日付と時刻のウィザードは、スピードとシンプルさの他に、さらにいくつかの利点を備えています。
- ウィザードで作成された高度な数式は、通常のDATEDIFと異なり、2つの日付のどちらが小さく、どちらが大きいかを気にしません。 日付1(開始日)が日付2(終了日)よりも大きい場合でも、差分は常に完璧に計算されます。
- ウィザードは、考えられるすべての単位(日、週、月、年)をサポートし、これらの単位の11種類の組み合わせから選択することができます。
- ウィザードで作成される数式は、通常のExcelの数式なので、編集、コピー、移動は自由に行えます。 また、ワークシートを他の人と共有すれば、その人のExcelにUltimate Suiteが入っていなくても、数式はすべてそのまま残ります。
このように、2つの日付の差をさまざまな時間間隔で計算することができます。 今日学んだDATEDIF関数やその他の公式が、あなたの仕事に役立つことを願っています。
ダウンロード可能なもの
Ultimate Suite 14日間フル機能版(.exeファイル)