はじめに:カレンダーでの手作業に時間を取られていませんか?
こんにちは、ぐーです!
みなさんの周りで、このような光景を目にすることはありませんか?
カレンダーを指でなぞりながら、「1、2、3……あ、祝日は除外するんだっけ?」と、一生懸命に数えている方の姿です。
実は、その作業はVBAの「DateDiff関数」を活用すれば、わずか一瞬で、しかも正確に完了します。
プログラミングと聞くと難しく感じるかもしれませんが、要は仕事を楽にするための「便利な道具」に過ぎません。今日は、この便利な道具の使い方を、シンプルにご紹介します。
DateDiff関数とは?
DateDiff(デイトディフ)関数は、例えるなら「2つの日付の間の距離を測るメジャー」のような存在です。
例えば、「今日」から「プロジェクトの締切日」まで、具体的に「あと何日あるか」「何ヶ月あるか」を正確に算出してくれます。
Excelシート上での単純な引き算と大きく異なる点は、計算の「単位」を自由自在に変更できることです。
「日」単位だけでなく、「月」「年」「週」といった単位でも、一回の指示で計算が可能になります。
この柔軟さが、日々の事務作業において非常に強力な武器となります。
使い方のルール(構文)
書き方はシンプルです。
DateDiff(単位, 開始日, 終了日)
たったこれだけ。「どんな単位で」「いつから」「いつまで」をコンピュータに伝えるだけで、計算は完了します。
よく使う単位リスト:
- “d” : 日数 (Day)
- “m” : 月数 (Month)
- “yyyy” : 年数 (Year)
【実践】コピペで使えるVBAコード
では、実際に動くコードを見てみましょう。
Excelを開いてVBAエディタ(Alt + F11)に貼り付けるだけで、すぐに試すことができます。
1. 締切までの「残り日数」を数える
プロジェクトの進捗管理などで、「あと何日残されているか」を把握したい時に便利です。
Sub CheckDeadline()
Dim todayDate As Date
Dim deadlineDate As Date
Dim remainingDays As Long
' 今日の日付
todayDate = Date
' 締切日(例:2026年12月31日)
deadlineDate = #12/31/2026#
' DateDiffで計算(単位は "d" = 日)
remainingDays = DateDiff("d", todayDate, deadlineDate)
' 結果を表示
MsgBox "締切まで、あと " & remainingDays & " 日です!", vbInformation
End Sub
2. 入社してからの「経過月数」を数える
人事データなどで、「入社から何ヶ月が経過したか」を算出する際に役立ちます。
Sub CheckServiceMonths()
Dim joinDate As Date
Dim currentDate As Date
Dim monthsCount As Long
' 入社日(例:2023年4月1日)
joinDate = #4/1/2023#
' 今日の日付
currentDate = Date
' DateDiffで計算(単位は "m" = 月)
monthsCount = DateDiff("m", joinDate, currentDate)
MsgBox "入社してから " & monthsCount & " ヶ月が経過しました。", vbInformation
End Sub
注意点:Excel関数との細かな違い
ここで、スムーズに活用するために欠かせない大切なポイントをお伝えします。
実は、Excelのセルで直接使用する関数にも、よく似た名前の「DATEDIF(デイトディフ)」が存在しますが、VBAの「DateDiff」とはスペルが少し異なります。
- Excelシート関数: DATEDIF(”f” が1つ)
- VBA関数: DateDiff(”f” が2つ)
「VBAで自動化したい!」という時は、今日紹介したfが2つのDateDiffを使ってみましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント