DATEDIF関数を使えない時の解決法

Excelで日付の差を計算する際に便利なDATEDIF関数。**しかし**、時には使用できないシチュエーションもあります。DATEDIF関数が動かないときや、そもそも関数を利用できない場合、どうすれば良いのでしょうか?この記事では、そんな時に役立つ代替方法を紹介します。

DATEDIF関数が使えない理由

DATEDIF関数が利用できない理由はいくつかあります。多くの場合、この関数が**正式にサポートされていない**ため、Excelのバージョンや設定によっては利用できないことがあります。また、関数の構文ミスや日付のフォーマットが適切でない場合も考えられます。

ネットワーク日数関数:NETWORKDAYS関数の活用

DATEDIFの代わりにNETWORKDAYS関数を使うと、**平日のみの日付差**を簡単に求めることができます。この関数は開始日と終了日、そして任意で休日リストを指定できます。

=NETWORKDAYS(開始日, 終了日, [休日])

例として、2023年1月1日から2023年1月31日までの平日数を求めるには、次のように入力します:

=NETWORKDAYS("2023-01-01", "2023-01-31")

もし特定の土日以外の休日があれば、第三引数にその日付リストを入力します。

日付の直接引き算を活用する

最もシンプルな方法として、Excelでは**日付を直接引き算**することができます。その際、結果は日数として表示されます。

例:セルA1に開始日「2023/01/01」、セルB1に終了日「2023/01/31」があるとき:

=B1-A1

この計算により、二つの日付間の日数が求められます。

TEXT関数で見やすい日付差を取得

結果を見やすくするためには、TEXT関数を利用し、日付差をカスタムフォーマットで表示することができます。

例えば、日付の差を「xx 日」の形で表示したい場合:

=TEXT(B1-A1, "0 \"日\"")

これにより、見やすくフォーマットされた日数が表示されます。

YEARFRAC関数でより精密な年差を取得

日付差が年をまたぐ場合、YEARFRAC関数が役立ちます。これは、開始日と終了日間の年の差を**精密な年換算**で返すため、金融計算などに役立ちます。

=YEARFRAC(開始日, 終了日)

これにより、例えば “2023/01/01” から “2024/01/01” までの精密な年を計算できます。

自作関数をVBAで作成する

DATEDIFではカバーできない複雑な計算が必要な場合には、VBAで**ユーザー定義関数(UDF)**を作ることもできます。この手法を使えば、特定の条件に基づいたカスタムロジックを簡単に組み込むことができます。

VBAエディタで以下のように作成します:


Function DaysBetweenDates(startDate As Date, endDate As Date) As Long
    DaysBetweenDates = endDate - startDate
End Function
    

この自作関数を使うと、Excelシート上で=DaysBetweenDates(A1, B1)のように呼び出せます。

これらの方法により、DATEDIF関数に頼らずにExcelでの効果的な日付計算が可能になります。ぜひ実践して、日付操作のエキスパートになりましょう!