2017年7月19日

【Excel】日付や時刻の差分を求めるマクロ


日付や時刻の差分を求めるには、DateDiff関数を使います。

たとえば、2017/7/1と2017/7/20の差分(日数)を求めるには、次のように記述します。
Sub GetDateTimeDiff()

    Dim dt1 As Date
    Dim dt2 As Date
    
    dt1 = CDate("2017/07/01")
    dt2 = CDate("2017/07/20")
    
    MsgBox DateDiff("d", dt1, dt2)
    
End Sub
第1引数で算出したい時間の間隔を指定します。この例では日数ですので"d"を指定しています。この設定値については下記の表を参照してください。

実行結果



東京オリンピック開幕まであと何日か?

ここでこのDateDiffを利用して、東京オリンピック開幕までの残り時間を求めてみたいと思います。
いろいろ方法はあると思いますが、ここでは開幕式の時刻(2020/7/24 20:00)までの秒数を求めてから日数、時間、分、秒を算出しています。
Sub GetTokyoOlympicsDiff()

    Dim timeSpan As Long
    
    '東京オリンピック開幕式までの残り時間(秒)を求める
    timeSpan = DateDiff("s", Now, "2020/7/24 20:00")
    
    Dim d As Integer
    Dim h As Integer
    Dim m As Integer
    Dim s As Integer

    '残り時間(秒)から日数、時間、分、秒を求める    
    d = Int(timeSpan / 86400)
    h = Int((timeSpan Mod 86400) / 3600)
    m = Int((timeSpan Mod 3600) / 60)
    s = (timeSpan Mod 3600) Mod 60
    
    MsgBox "東京オリンピック開幕まで、あと " & _
            d & "日" & _
            h & "時間" & _
            m & "分" & _
            s & "秒"

End Sub

実行結果





第1引数(時間間隔)の設定値
設定 説明
yyyy
q 四半期
m
y 通日
d
w 平日
ww
h 時間
n
s


<参考サイト>
DateDiff 関数 | Office VBA 言語リファレンス
2020年 東京オリンピックへのカウントダウン!

スポンサーリンク