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

Month関数の使い方 ExcelVBA

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関数を使いこなせるようになると、日付データの処理が非常に効率化されます。
業務でも頻出の関数なので、ぜひマスターしておきましょう。

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

コメント

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