PR

【ExcelVBA】日付(Date)から年度を取得する方法

ExcelVBA-日付から年度を算出する方法_アイキャッチ その他
スポンサーリンク

日付(Date)から年度を算出する方法

日付から年度を算出する方法について説明します。
年・月・日を取り出す関数はありますが、年度を取り出す関数はありません。
なので月を取り出して計算する必要があります。

サンプルマクロで実行している内容
・A1に書かれている日付を取得する
・年度を算出してA2セルに出力する
 Month関数で月を取得して、値が3以下(1~3月)だったら日付の年にマイナス1をする
 月が4以上だったら日付の年を年度とする

・Year関数で年を取得してA3セルに出力する
・Month関数で月を取得してA4セルに出力する
・Day関数で日を取得してA5セルに出力する

Sub sample1()

Dim TargetDate As Date

    '対象の日付をセット
    TargetDate = Range("A1")

    '年度を出力
    
        '月が3以下の場合
        If Month(TargetDate) <= 3 Then
              '今の年からマイナスに1する
              Range("A2") = Year(TargetDate) - 1
          Else
              '今の年を使用
              Range("A2") = Year(TargetDate)
        End If
    
    '年を出力
    Range("A3") = Year(TargetDate)
    
    '月を出力
    Range("A4") = Month(TargetDate)
    
    '日を出力
    Range("A5") = Day(TargetDate)

End Sub

マクロ実行前→実行後
A1セル~A5セルに値が出力されました。

ExcelVBA-日付から年度を算出する方法
スポンサーリンク

一覧データで日付から年度・年・月・日を取り出す

次は下のような表のデータがあり、A列に日付が入力されています。
この日付データを使用して、B列に年度、C列に年、D列に月、E列に日を出力するマクロを作成します。

ExcelVBA-日付から年度を算出する方法_表データ_実行前

サンプルマクロで実行している内容
・2行目~14行目までをループする
 ・A列に書かれている日付を取得する
 ・年度を算出してB列に出力する
  Month関数で月を取得して、値が3以下(1~3月)だったら日付の年にマイナス1をする
  月が4以上だったら日付の年を年度とする

 ・Year関数で年を取得してC列セルに出力する
 ・Month関数で月を取得してD列セルに出力する
 ・Day関数で日を取得してE列セルに出力する
 ⇒次の行へ
・ループ終了

Sub sample2()

Dim i As Integer

    '2行目~14行目まで繰り返し
    For i = 2 To 14
    
        '年度をB列に出力
            '月が3以下の場合
            If Month(Cells(i, 1)) <= 3 Then
                  '今の年からマイナスに1する
                  Cells(i, 2) = Year(Cells(i, 1)) - 1
              Else
                  '今の年を使用
                  Cells(i, 2) = Year(Cells(i, 1))
            End If
    
        '年をC列に出力
        Cells(i, 3) = Year(Cells(i, 1))
        
        '月をD列に出力
        Cells(i, 4) = Month(Cells(i, 1))
        
        '日をE列に出力
        Cells(i, 5) = Day(Cells(i, 1))
    
    Next

End Sub

マクロ実行後の状態です。
B列~E列に値が出力されました。

ExcelVBA-日付から年度を算出する方法_表データ_実行後JPG
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました