指定した月の月初・月末を求める(翌月1日から1日戻す)
PADで基準日から月初と月末を求めます。翌月1日から1日戻す流れを、平年の2月・うるう年・12月の年越しで比較。固定日時の練習で、30日後や最終営業日との違いも確認します。
画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。
実行前に確認
- 月末は暦の最終日です。30日後、前月末、最終営業日とは異なります。土日・祝日を避ける処理は含みません。
- MonthEndの時刻は00:00:00です。その日の23:59:59や月内全データの締切を表す値ではありません。日時の月内抽出へ応用する場合は、MonthStart以上かつNextMonthStart未満という範囲を別途設計します。
- 書式変換はタイムゾーン変換ではありません。別の暦・地域設定では変換結果を確認してください。年9999の12月など日時の上限付近はこの練習の対象外です。
- 有人・手動実行で画面表示する例です。クラウドからの起動や無人実行は別の環境設定・利用権が必要です。実際のPower Automateフローは未実行です。
1使うアクション
- アクション 1テキストを datetime に変換固定値20260215120000 → BaseDate
- アクション 2datetime をテキストに変換yyyyMM → YearMonth
- アクション 3テキストを datetime に変換%YearMonth%01000000 → MonthStart
- アクション 4加算する日時MonthStartに1月 → NextMonthStart
- アクション 5加算する日時NextMonthStartに−1日 → MonthEnd
- アクション 6datetime をテキストに変換月初・月末をそれぞれyyyyMMddにする(2個)
- アクション 7メッセージを表示月初と月末を確認して終了
図で見る処理のイメージ
概念図月の日数を28・29・30・31から選ぶ分岐は不要です。月初を作ってから翌月へ進め、1日だけ戻します。
月初
2026/02/01 00:00
1か月後
2026/03/01 00:00
1日前=月末
2026/02/28 00:00
通常の入力は月初と月末を表示して終了。日時に変換できない入力では停止し、後続の計算・表示へ進みません。
| 先頭に入力するテキスト | 月初 | 翌月1日 | 月末 |
|---|---|---|---|
| 20260215120000 | 20260201 | 20260301 | 20260228 |
| 20280215120000 | 20280201 | 20280301 | 20280229 |
| 20260430120000 | 20260401 | 20260501 | 20260430 |
| 20261231120000 | 20261201 | 20270101 | 20261231 |
図表は暦と公式仕様に基づく期待値で、実際のフローを実行して確認した結果ではありません。PAD実機未実行です。表の日付の時刻はすべて00:00:00です。
設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。
2実際の設定内容
入力する値・操作手順を確認する10ステップの設定と確認方法
- 1
準備:WindowsのPower Automate for desktopで、Power Fxをオフにした新しい手動フローを作ります。標準の %変数名% 記法を使います。日本語・西暦の通常のWindows地域設定を想定します。外部接続、Excel、ファイルの読み書きは使いません。組織の利用ルールと利用権を確認してください。
- 2
「テキストを datetime に変換」で、変換するテキスト=20260215120000、日付はカスタム形式で表されます=オン、カスタム形式=yyyyMMddHHmmss、生成された変数=BaseDate。半角数字で入力し、引用符は付けません。2026年2月15日12時の練習値が日時型になります。
- 3
「datetime をテキストに変換」で、変換するdatetime=%BaseDate%、使用する形式=カスタム、カスタム形式=yyyyMM、生成された変数=YearMonth。期待値はテキストの202602です。MMは月で、mm(分)ではありません。
- 4
もう1個「テキストを datetime に変換」を置きます。変換するテキスト=%YearMonth%01000000、カスタム形式をオン、形式=yyyyMMddHHmmss、生成された変数=MonthStart。年月の後ろに日01と時刻000000を付けるため、入力は20260201000000、結果は2月1日00:00:00の日時型です。YearMonth自体は書き換えません。
- 5
「加算する日時」で、日時=%MonthStart%、加算=1、時間単位=月、生成された変数=NextMonthStart。月初から1か月進めるので、期待値は2026年3月1日00:00:00です。元のBaseDateへ直接1か月を足す設定にしないでください。
- 6
もう1個「加算する日時」で、日時=%NextMonthStart%、加算=-1、時間単位=日、生成された変数=MonthEnd。翌月1日の1日前は当月の最終日です。期待値は2026年2月28日00:00:00になります。
- 7
表示用に「datetime をテキストに変換」を2個追加します。1個目は%MonthStart%をカスタム形式yyyyMMddでStartTextへ、2個目は%MonthEnd%を同じ形式でEndTextへ変換します。「メッセージを表示」の本文=月初:%StartText%/月末:%EndText%、ボタン=OK、自動的に閉じる=オフ。期待表示は月初:20260201/月末:20260228です。
- 8
先頭の14桁だけを表の入力へ変更し、毎回先頭から実行します。うるう年の2028年2月、30日までの4月、12月から翌年1月への切り替わりを確認します。途中のMonthStart・NextMonthStart・MonthEndは日時型のまま、StartText・EndTextは表示用テキストです。
- 9
変換できない入力では、既定のエラー時フロー停止を保ちます。空欄や20260230000000のような存在しない日付を、今日や0に置き換えて続行しません。14桁とカスタム形式を確認し、修正後に先頭からやり直します。
- 10
当月へ切り替える場合は、固定値を確認した後に先頭を「現在の日時を取得します」へ置き換え、出力をBaseDate、タイムゾーンをシステムタイムゾーンにします。PCのタイムゾーンが対象業務と一致することを確認します。日付は一度取得し、途中で再取得しません。
- 対象環境
- Power Automate for desktop(標準の変数記法)
- 更新日
- 2026年10月19日