教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Month関数の使い方を教えて!

構文

構文は以下の通りです。

Month(日付)

解説

Month関数は、日付から月を取得するための関数です。

引数 指定 内容
日付 必須 日付を直接指定するか、セル参照や変数を指定することができます。

使用例

Month(#8/24/2021#)   

使い方

具体的な使い方を紹介します。

1.単純な日付の使用例

まずは、単純な日付を指定してMonth関数を使用する例を紹介します。

Dim myDate As Date
Dim myMonth As Integer
myDate = #2023/06/07#
myMonth = Month(myDate)
MsgBox "指定された日付の月は " & myMonth & " です。"

上記の例では、変数myDateに指定した日付「2023/06/07」を代入し、Month関数を使ってその月を取得しています。取得した月の値はmyMonthに代入され、メッセージボックスに表示されます。

2.セルの値を使用する例

次に、セルの値を使ってMonth関数を使用する例を紹介します。

Dim myDate As Range
Dim myMonth As Integer
Set myDate = Range("A1")
myMonth = Month(myDate.Value)
MsgBox "指定された日付の月は " & myMonth & " です。"

上記の例では、セルA1に格納された日付を取得し、Month関数を使ってその月を取得しています。取得した月の値はmyMonthに代入され、メッセージボックスに表示されます。

プログラミング例

以下に、プログラミング例を紹介します。

特定の日付データから月を抽出し、その値を別のセルに表示する例を考えてみます。以下のVBAコードを使うことで、A1セルに入力された日付の月をB1セルに表示することができます。

Sub ExtractMonth()
    Dim dateValue As Date
    dateValue = Range("A1").Value
    Range("B1").Value = Month(dateValue)
End Sub

上記のコードでは、まずA1セルに入力された日付を変数dateValueに代入しています。次に、Month関数を使ってdateValueから月を抽出し、その結果をB1セルに表示しています。これにより、日付データから月を抽出する処理が自動化されます。

次に、特定の月に該当するデータを抽出する例を考えてみます。以下のVBAコードは、指定した月のデータのみを抽出し、別の範囲に表示する例です。

Sub ExtractDataByMonth()
    Dim dataRange As Range
    Dim cell As Range
    Dim targetMonth As Integer
    ' 抽出対象の月を指定
    targetMonth = 6  ' 6月のデータを抽出する例
    ' データが格納されている範囲を指定
    Set dataRange = Range("A1:A10")  ' データ範囲はA1からA10までとする
    ' データ範囲をループして、指定した月と一致するデータを抽出
    For Each cell In dataRange
        If Month(cell.Value) = targetMonth Then
            ' 一致するデータを別の範囲に表示
            ' ここではB列に表示する例とする
            cell.Offset(0, 1).Value = cell.Value
        End If
    Next cell
End Sub

上記のコードでは、targetMonth変数に抽出したい月を指定します。例として、6月のデータを抽出するように設定しています。次に、データが格納されている範囲をdataRangeに指定します(例ではA1からA10まで)。その後、Forループを使用してデータ範囲を走査し、指定した月と一致するデータを抽出しています。一致するデータがある場合は、そのデータをオフセットして別の範囲(例ではB列)に表示します。

次に、Month関数は日付データを処理するだけでなく、他の機能と組み合わせることでさまざまな応用例があります。

Sub CalculateTotalByMonth()
    Dim dataRange As Range
    Dim cell As Range
    Dim targetMonth As Integer
    Dim total As Double
    ' 抽出対象の月を指定
    targetMonth = 6  ' 6月のデータの合計を計算する例
    ' データが格納されている範囲を指定
    Set dataRange = Range("A1:A10")  ' データ範囲はA1からA10までとする
    ' データ範囲をループして、指定した月と一致するデータの合計を計算
    total = 0
    For Each cell In dataRange
        If Month(cell.Value) = targetMonth Then
            total = total + cell.Value
        End If
    Next cell
    ' 合計を表示
    Range("B1").Value = total
End Sub

上記のコードでは、指定した月のデータの合計を計算する例を示しています。データが格納されている範囲をdataRangeに指定し、targetMonth変数に抽出したい月を指定します(例では6月)。その後、Forループを使用してデータ範囲を走査し、指定した月と一致するデータの合計を計算しています。合計値は変数totalに累積され、最後にB1セルに表示されます。

まとめ

Month関数は日付の処理において非常に役立つ関数であり、日付データの月の抽出に幅広く利用されます。是非活用してください。