【ExcelVBA・マクロ】Year関数の使い方|日付から年を取得する方法【コピペOK】

Year関数の使い方 ExcelVBA

VBAで日付データを扱っていると、次のようなことはありませんか?

  • 日付から年だけ取得したい
  • 年度ごとに集計したい
  • 現在の年を取得したい

このような場合は、Year関数を使うことで解決できます。
日付データから「年」だけを取得できる便利な関数です。

この記事では、Year関数の基本から実務での活用方法まで分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 日付から年を取得できる
  • 年度判定ができる
  • 日付データを分解できる

Year関数とは?

Year関数は、日付データから年の部分を取得する関数です。

例えば、


2025/06/17

から、


2025

を取得できます。


基本:Year関数の使い方

基本構文はこちらです。

Year(日付)

基本例

MsgBox Year("2025/06/17")

→ 2025


現在の年を取得する

MsgBox Year(Date)

→ 現在の年


セルの日付から年を取得する

Dim y As Integer

y = Year(Range("A1").Value)

MsgBox y

セルへ年を書き出す

Range("B1").Value = Year(Range("A1").Value)

A1の日付から年だけを取り出してB1へ出力します。


Month・Dayと組み合わせる

日付を分解できます。

Dim dt As Date

dt = Date

MsgBox "年:" & Year(dt) & vbCrLf & _
       "月:" & Month(dt) & vbCrLf & _
       "日:" & Day(dt)

年度判定を行う

If Year(Date) = 2025 Then

    MsgBox "2025年です"

End If

年齢計算で使う

Dim birthDay As Date

birthDay = #1/1/2000#

MsgBox Year(Date) - Year(birthDay)

※簡易計算です。


指定年のデータだけ抽出する

If Year(Range("A1").Value) = 2024 Then

    MsgBox "2024年のデータです"

End If

DateSerialと組み合わせる

取得した年を利用して日付を作成できます。

Dim y As Integer

y = Year(Date)

MsgBox DateSerial(y, 1, 1)

→ その年の1月1日


実務での活用例

  • 年度別集計
  • 年齢計算
  • 帳票作成
  • データ分析

日付処理では非常によく使われる関数です。


注意点

① 日付型である必要がある

Year("ABC")

→ エラー


② 戻り値は数値型

文字列ではなく数値が返されます。


③ 年齢計算には注意

誕生日を考慮する場合は追加計算が必要です。


Year・Month・Dayの違い

関数取得内容
Year
Month
Day

安全な書き方(おすすめ)

Dim dt As Variant

dt = Range("A1").Value

If IsDate(dt) Then

    MsgBox Year(dt)

Else

    MsgBox "日付ではありません"

End If

よくあるエラーと対処法

① 型が一致しません

日付として認識できない値の可能性があります。

② 想定と違う年になる

セルの実データを確認してください。

③ 年齢計算がずれる

誕生日を考慮したロジックに変更してください。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • Yearは日付から年を取得する関数
  • 年度集計や年齢計算で活躍する
  • Month・Dayと組み合わせると便利
  • 日付処理では頻出の関数

Year関数を使いこなせるようになると、年度管理や日付分析が簡単になります。
実務でも使用頻度が高い関数なので、ぜひマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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