Excel

【Excel】VBAマクロで日付の比較(大小:今日:yyyymmddやシリアル)方法【何日間:以降だったら:今日より前の日付か判断】

当サイトでは記事内に広告を含みます

この記事では【Excel】VBAマクロで日付の比較(大小:今日:yyyymmddやシリアル)方法【何日間:以降だったら:今日より前の日付か判断】について解説していきます。

ポイントとしては`DateDiff`、`Format`、`Now`関数を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

 

VBAマクロで日付の比較する方法(A列とB列の2行目から最終行までループで順番に大小関係を比較し、C列に大きい方の日付、D列に差が何日間かを表示:yyyymmdd形式)

それではまず、A列とB列の日付を比較し、C列に大きい方の日付、D列に差が何日間かを表示する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub HikakuToHyouji()
    Dim saigoNoGyou As Long
    Dim i As Long
    Dim hizukeA As Date, hizukeB As Date
    Dim sa As Long
    
    'A列の最終行を取得
    saigoNoGyou = Cells(Rows.Count, 1).End(xlUp).Row
    
    '2行目から最終行までループ
    For i = 2 To saigoNoGyou
        '日付をyyyymmdd形式で取得
        hizukeA = DateValue(Format(Cells(i, 1).Value, "yyyy/mm/dd"))
        hizukeB = DateValue(Format(Cells(i, 2).Value, "yyyy/mm/dd"))
        
        'C列に大きい方の日付を表示
        If hizukeA > hizukeB Then
            Cells(i, 3).Value = hizukeA
        Else
            Cells(i, 3).Value = hizukeB
        End If
        
        'D列に日付の差(日数)を表示
        sa = Abs(DateDiff("d", hizukeA, hizukeB))
        Cells(i, 4).Value = sa
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面でHikakuToHyouji関数を実行します。

このコードでは、まずA列とB列の日付をyyyymmdd形式で取得し、比較して大きい方の日付をC列に表示します。

さらに、A列とB列の日付の差を日数で計算し、D列に表示するものになっております(^^)/

 

VBAマクロで日付の比較する方法(B列の2行目から最終行までループで今日より前の日付か判断し、今日以降だったらC列に「期限前」と書き、今日より前だったら「期限切れ」と表示する方法(シリアル値)

続いては、B列の日付が今日より前かどうかを判断し、結果をC列に表示する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub KigenHantei()
    Dim saigoNoGyou As Long
    Dim i As Long
    Dim kyouNoHizuke As Date
    Dim hikakuHizuke As Date
    
    '今日の日付を取得
    kyouNoHizuke = Date
    
    'B列の最

終行を取得
    saigoNoGyou = Cells(Rows.Count, 2).End(xlUp).Row
    
    '2行目から最終行までループ
    For i = 2 To saigoNoGyou
        'B列の日付を取得
        hikakuHizuke = Cells(i, 2).Value
        
        'B列の日付が今日より前なら「期限切れ」、そうでなければ「期限前」とC列に表示
        If hikakuHizuke < kyouNoHizuke Then
            Cells(i, 3).Value = "期限切れ"
        Else
            Cells(i, 3).Value = "期限前"
        End If
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面でKigenHantei関数を実行します。

このコードでは、まず今日の日付を取得し、B列の各行の日付が今日より前かどうかを判断します。

その結果に基づき、C列に「期限切れ」または「期限前」という文字列を表示するコードになっています!

 

まとめ VBAマクロで日付の比較方法(何日間:以降だったら:今日より前の日付か判断:今日:yyyymmd)

この記事では、VBAマクロで日付の比較(大小:今日:yyyymmddやシリアル)方法【何日間:以降だったら:今日より前の日付か判断】について解説しました。

マクロをマスターしてさらに快適な生活を送っていきましょう!