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

コメント