
ExcelVBA 日付データから「月を取得」「月初や月末を求める」といった処理を行うことで、データの集計やレポート作成を効率化できます。使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA 日付データから「月を取得」「月初や月末を求める」|シーン
以下のシーンで利用します。
1.指定した日付の「月」だけを取り出す。
2.「月の最終日」を求めて、月末締めのデータを抽出する。
3.「月初日」を求めて、月ごとの処理を行う。
Excel VBA 「月を取得」「月初や月末を求める」|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
指定した日付の「月」を取得
標準モジュール
指定した日付の「月」を取得するには Month 関数を使用します。
Option Explicit
Sub GetMonth()
Dim targetDate As Date
targetDate = Date ' 今日の日付を取得
MsgBox "対象の日付の月は " & Month(targetDate) & " 月です"
End Sub
今日が 2025年2月15日 なら、メッセージボックスに「対象の日付の月は 2 月です」と表示されます。
指定した日付の「月初日」を取得
標準モジュール
指定した日付の月初日は DateSerial 関数を使うと求められます。
Option Explicit
Sub GetFirstDayOfMonth()
Dim targetDate As Date
targetDate = Date ' 今日の日付
MsgBox "月の初日は " & DateSerial(Year(targetDate), Month(targetDate), 1)
End Sub
今日が 2025年2月15日 なら、「月の初日は 2025/02/01」と表示されます。
指定した日付の「月の最終日」を取得
標準モジュール
下記はDateSerial 関数を使い取得します。
Option Explicit
Sub GetLastDayOfMonth()
Dim targetDate As Date
targetDate = Date ' 今日の日付
MsgBox "月の最終日は " & DateSerial(Year(targetDate), Month(targetDate) + 1, 0)
End Sub
今日が 2025年2月15日 なら、「月の最終日は 2025/02/28」と表示されます。(うるう年なら29日)
DateSerial(Year(targetDate), 3, 0) を使えば、2月の最終日が28日または29日と自動判定される。
2.日付の入力ミスを防ぐ
IsDate 関数で入力値が正しい日付かチェックすると安全
Excel VBA 日付データから「月を取得」「月初や月末を求める」|まとめ
処理内容 | VBA関数 | 例 |
月の取得 | Month(Date) | 2(2025/2/15なら) |
月初日 | DateSerial(Year(Date), Month(Date), 1) | 2025/02/01 |
月末日 | DateSerial(Year(Date), Month(Date) + 1, 0) | 2025/02/28(うるう年は29日) |
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。