VBAで日付データを扱っていると、次のようなことはありませんか?
- 日付から「月」だけ取り出したい
- 月ごとに処理を分けたい
- 集計や分析に使いたい
このような場合は、Month関数を使うことで解決できます。
日付から「月(1〜12)」を取得できる、非常に基本的な関数です。
この記事では、Month関数の基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 日付から月を取得できる
- 月ごとの処理ができる
- 実務で使える活用方法が分かる
基本:Month関数の使い方
基本構文はこちらです。
Month(日付)
例:
MsgBox Month("2024/05/10")
→ 5
Month関数の特徴
- 日付から月(1〜12)を取得
- Date型・文字列どちらでも使用可能
基本例
Dim m As Integer
m = Month(Date)
MsgBox m
→ 現在の月が取得されます
セルの値から月を取得する
Dim m As Integer
m = Month(Range("A1").Value)
MsgBox m
A1の日時から月を取得できます。
Year・Dayとの組み合わせ
年月日を分解できます。
Dim y As Integer
Dim m As Integer
Dim d As Integer
y = Year(Date)
m = Month(Date)
d = Day(Date)
MsgBox y & "/" & m & "/" & d
条件分岐で使う
月ごとの処理分岐に便利です。
If Month(Date) = 4 Then
MsgBox "4月の処理です"
End If
月別処理の例
Select Case Month(Date)
Case 1
MsgBox "1月です"
Case 2
MsgBox "2月です"
Case Else
MsgBox "その他の月です"
End Select
実務での活用例
- 月別集計
- 請求処理の分岐
- 月次レポート作成
- データ分析
業務処理では非常によく使われます。
注意点
① 日付として認識される必要がある
文字列の場合は日付形式である必要があります。
② 数値でも動作する場合がある
Month(45000)
→ シリアル値として処理されます。
安全な書き方(おすすめ)
Dim val As Variant
val = Range("A1").Value
If IsDate(val) Then
MsgBox Month(val)
Else
MsgBox "日付ではありません"
End If
よくあるエラーと対処法
① 型が一致しません
日付として認識できない可能性があります。
② 思った月にならない
セルの値と表示形式を確認してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Monthは日付から月を取得する関数
- 1〜12の数値で返る
- 月別処理や集計で活躍
- Year・Dayとセットで使う
Month関数を使いこなせるようになると、日付データの処理が非常に効率化されます。
業務でも頻出の関数なので、ぜひマスターしておきましょう。

コメント