PAD基礎⑤ 月末日と月初日の入力

業務自動化

今回はさまざまなビジネスシーンで良く使われる月末日や月初日の基本的な考え方を現在日時から自動的に算出するような活用方法を「請求書」のフォーマットにプロットするような事例を用いて、2回に渡って取り上げてみます。

今回のテーマ

前回、現在日を取得してそれを報告書などにプロットすることを行いましたが、アイデア次第で月末日などを算出することができます。そして請求書などにおいては、支払い期限などを「翌月末日」などに設定して取り扱うことが多いかと思われます。このプロセスを考えていくのですが、今回の基礎⑤では、これらの計算の仕方などを説明していきます。

また次回、基礎⑥では、さらに発展しつつ実際の活用事例として、土日のお休みや祝日カレンダーなどに基づいた「翌月末日」が非稼働日であった場合のケースについて考えていきます。併せて実際に手を動かしてみて、学習していただければ幸いです。

まずは、図にあるような請求書のサンプルをExcelで作成しておいてください。もしお手持ちの請求書フォーマットがExcelであれば、プロットする位置だけを後程調整しただければ構いません。

まず、今回の基礎⑤では、
1.月初日や月末日の算出方法を
  学習
2.翌月末日の算出を学習
3.これらを使って請求書に
  プロットする
ような手順で進めます。
算出した変数値を少しづつ実験しながら確認していきますので都度理解を深めていただければ良いかと思います。

現在日の取得

今回はまず、「現在日」を自動で取得することから始めます。

① アクションの日時を開き、「現在の日時を取得」をドラッグ&ドロップします。

② 取得のところは、「現在の日時」を選択します。
③ タイムゾーンは「システムタイムゾーン」のままで良いです。
④ 生成された変数は自動的に CurrentDateTime という名前の変数が保管されますが、
 今回はいろいろな日時の変数を取り扱うので「現在日」と名前を変更しきます。
 実際には、2025/11/25 00:00:00 といった形式の変数形式で保管されます。

ポイントとしては、この変数には、使い方でいろいろな変形が可能で、「プロパティ」と呼ばれる固有の属性を取り出すことができます。例えば

・年であれば、%現在日.Year%
・月であれば、%現在日.Month%
・日であれば、%現在日.Day%
・時であれば、%現在日.Hour%
・分であれば、%現在日.Minute%
・秒であれば、%現在日.Second%

だったりといった特定の部分を取り出すことができる変数となっています。これで「現在日」が取り出せました。こちらは、次で実際に使用する時に具体的に見て行きましょう。

今回も同様に、この「年」「月」「日」を使って、Excel側にプロットしていきます。

月初日の作成

次に、現在日の情報から「月初日」を作ってみましょう。

① アクションの変数を開き、「変数の設定」をドラッグ&ドロップします。

② 作成したい変数は、 月初日 として名前を変更します。 (デフォルトでは自動で NewVar(新しい変数の意味)が設定されています)
③ 値には、変数 現在日のプロパティを使います。
 ここでは、変数の形式上 年月日の形式として、スラッシュ‘/’ で区切ります。 つまり

 %現在日.Year%/%現在日.Month%/%現在日.Day%
                   年月日の間に「/」スラッシュを入れる

この理由として、変数の種別があげられます。
このように作成した 変数 月初日ですが、実は詳しく言うと「テキスト型」という形式になっています。

本来は日時データは、「Datetime型」という形式で保管され、だからこそ、プロパティで、年月日と別々に取り出せたりしますが、「テキスト型」では文字列操作で取り出す(つまり先頭から何文字目まで使うとか)ことしかできません。

日時については、このような独立したプロパティを持っている利点を活かして、テキストからDateTime側への変換もスムーズに行えるよう「/」にて年月日を区切ることで他の変数と類似した表示ができるようにしているのです。

 Datetime型: 日時に特化したフォーマットの変数 yyyy/MM/dd hh:mm:ss
 テキスト型: あくまで文字列として認識、Datetimeの表記で日時に変換も可能

変数のお作法なので難しいと感じる方はスキップしても良いかと覆います。
%現在日.Year%年%現在日.Month%月%現在日.Day%日 などのテキスト型でもPADはテキストから日時データへの返還アクションで認識してくれますが、 フォーマットに合致していない日時テキストだと変換できない可能性もあるための補足解説です


これを少し動作確認をしながら確認して行きましょう。

① 一旦セーブ💾して、実行「▶」してみましょう。するとこの2行のブロックが設定どおりに動き始めます。

② 先に変数ペインの「現在日」をクリックしてみます。こちらは、Datetime型と表記され、日時を意味する変数としてPADが解釈しています。

 

 

月初日」 の方をクリックしてみます。テキスト型となっていることがわかり、これは数字の「1」や記号の「/」を文字列認識していることから、PADは日時としてではなく、文字列として解釈していることになります。

 

ちなみに、このテキスト型とDatetime型とを相互変換することも「テキスト」アクションの中のコマンドを使用することで実現可能です。
もともとDatetime型はカレンダーに連動している点と足し算や引き算にも対応している点に特徴があります。テキスト型では文字列操作ができるので、何文字目を抜き取ったり順序をアレンジしたりできる特徴もありますので、必要に応じて変換して使うことが望ましいです。

後の講座で使いますが、この「日時をテキストに変換」したり、「テキストを日時に変換」してくれるようなアクションがありますので簡単にフォーマットが変えられます。

月末日の算出

今度は、「月初日」の情報から、「月末日」を作ってみましょう。

ステップ1

① アクションの日時を開き、「加算する日時」をドラッグ&ドロップします。

② 日時には、変数{X}から %月初日% を選んできます。

この月末日の考え方には2アクションをセットとして考える必要があり、

 (ステップ1)まず、ひと月先の月初日を出す
 (ステップ2)その月初日から、1日分をマイナスする

これがポイントとなります。
理由は、月によってその月の最終日が異なり、28日であったり、30日や、31日 であったりとマチマチなので、それぞれテーブル的なもので考えるより、次の月に進んで、1日戻る方がスマートで汎用的なアルゴリズム(計算論理)となるからです。 (その分、月初日は必ず1日から始まるので固定値として楽ですよね)

③ まずは、ステップ1から進めましょう。 加算には、「1」を手入力します。
④ 時間単位には、「月」を選択します。
⑤ 生成された変数は、今回は 月末日 といった名前に変数名を変更します。

[注意] 変数名は 途中ステップなので、名前は 月末日となっていますが、現時点では、まだ翌月の月初日になっていますので注意しましょう。ただし、そのまま使います。

ステップ2

では続けて、2番目のステップとなる翌月の月初日から1日引き算するようにしましょう。

① アクションの日時を開き、「加算する日時」をドラッグ&ドロップします。

② 日時には、変数{X}から %月末日% を選んできます。

現時点の月末日は、ステップ1が終わっただけで、月末日という変数名ですが実際には、翌月の月初日が入っています。ここからステップ2に移行して実際の月末日への算出となるのです。

③ ステップ2を設定します。 加算には、「ー1」を手入力します。
④ 時間単位には、「日」を選択します。
⑤ 生成された変数は、今回は 月末日 といった名前に変数名を変更します。

これで月末日が設定できました。次は請求書などでも良く使われる翌月末日について考えてみましょう。

翌月末日の算出

翌月末日以降も考え方は同様で、欲しい月末の次の月初日を指定するような形でマイナス1を行うことで実現できます。ここでは、翌月末日なので、ステップ1で2か月先(足して)、ステップ2でマイナス1を行います。

ステップ1

① アクションの日時を開き、「加算する日時」をドラッグ&ドロップします。

② 日時には、変数{X}から %月初日% を選んできます。

今回は、翌月末日なので、

 (ステップ1)まず、2か月先の月初日を出す
 (ステップ2)その月初日から、1日分をマイナスする

③ まずは、ステップ1から進めましょう。 加算には、「2」を手入力します。
④ 時間単位には、「月」を選択します。
⑤ 生成された変数は、今回は 翌月末日 といった名前に変数名を変更します。

ステップ2

では続けて、2番目のステップとなる翌月の月初日から1日引き算するようにしましょう。こちらは、対象となる変数が異なるだけで、あとは同じ方法です。

① アクションの日時を開き、「加算する日時」をドラッグ&ドロップします

② 日時には、変数{X}から %翌月末日% を選んできます。
③ ステップ2を設定します。 加算には、「ー1」を手入力します。
④ 時間単位には、「日」を選択します。
⑤ 生成された変数は、今回は 翌月末日 といった名前に変数名を変更します。

「翌月末日」の算出を行うことができました。これを使って、請求書にプロットしてみましょう。
その前、変数の動作確認をしておきます。

変数の動作チェック

では、ここで作成した変数(月初日、月末日、翌月末日)が正しいかチェックを行ってみましょう。

① 一旦セーブ💾して、実行「▶」してみましょう。
② 変数ペインに着目し、実際の動作が正常か確認します。

・現在日については、2025/11/25を起点として、正常に取れています。
・月初日についても、11月なので、11/1が表示されていて正常です。
・月末日についても、11月なので、11/30と表示されており正常です。
・ 翌月末日については、11月に対して、12/31と表示されているため
 正常な動きとなっているようです。

このように月末日について、その月のカレンダーどおりに、30日と31日が使い分けられて表示できており、問題ないことが確認できました。

請求書のファイル設定

今回は事例として請求書のフォーマットを呼び出してみます。※請求書自体はあらかじめ作っておき、現在日と翌月末日のセル位置を確認しておきます。。

請求書フォーマットの呼び出し

まずは請求書のExcelファイルを指定して、立ち上げることから始めます。

① アクションのExcelを開き、「Excelの起動」をドラッグ&ドロップします

② 設定画面で「Excelの起動」には、「次のドキュメントを開く」を選択します。
「ドキュメントパス」が現れますので、こちらSでファイルを選択。

④ ファイルマーク📁をクリックして、開きたい「請求書ファイル」を選択。

⑤ 生成された変数に ExcelInstance という変数が保存されました。 これが試験成績書のExcelファイルを意味しますので覚えておきます。

現在日のプロット

今回は事例として請求書のフォーマットを呼び出してみます。※請求書自体はあらかじめ作っておき、現在日と翌月末日のセル位置を確認しておきます。まずは現在日からプロットします。

① アクションのExcelを開き、「Excelワークシートに書き込む」をドラッグ&ドロップします

② Excelインスタンスは、起動したExcelファイルの実体として、前ページで設定した変数 %ExcelInstance% を選びます(これしかないのでデフォルトで設定)。

③ 書き込む値は、現在日を年月日表示しますので、枠内から現在日のプロパティ を呼び出し、各変数をダブルクリック、「年」「月」「日」を手入力して つなげます。

 %現在日.Year%年%現在日.Month%月%現在日.Day%日

④書き込み位置は、「指定したセル上」で」I列(アイ)列3行目を指定します。

翌月末日のプロット

次は、翌月末日のプロットです。

① アクションのExcelを開き、「Excelワークシートに書き込む」をドラッグ&ドロップします

② Excelインスタンスは、起動したExcelファイルの実体として、前ページで設定した変数 %ExcelInstance% を選びます(これしかないのでデフォルトで設定)。
③ 書き込む値は、翌月末日を年月日表示しますので、枠内から翌月末日のプロパティを呼び出し、各変数をダブルクリック「年」「月」「日」を手入力してつなげます。

 %翌月末日.Year%年%翌月末日.Month%月%翌月末日.Day%日

④ 書き込み位置は「指定したセル上」で、H列12行目を指定します。


これで請求書にプロットする設定は終わりました。

テストランしてみよう

それでは、現在日と翌月末日がプロットできるかテストランしてみましょう。

① 一旦セーブ💾して、実行「▶」してみましょう

② 正常に発行日のところに「現在日」が、そして、お支払期限のところに「翌月末日」がプロットされていればOKです。

以上で基本フォームの中に日付を入れるテーマとして、「翌月末日」などを自動計算してプロットする自動化を勉強してきました。

ところで、これはこれでいいのだけど、実際には土日とかは
どうすればいいのかしら

Qualiteacher
Qualiteacher

いい質問ですね。
よく銀行などは土日が翌営業日として処理していますね。
ここは次回基礎⑥で条件分岐をテーマにして考えてみましょう

参考:テキストからDatatime型にフォーマット変換

月初日のテキスト型をDatetime型に変換する方法を試してみましょう。今回は先ほどテキスト型として計算された月初日に焦点をあてて、これをDatatime型にしてみます。

① アクションのテキストを開き、「テキスト値を日時の値に変換」を2行目の「変数の設定」と「加算する日時」の間にドラッグ&ドロップします。

② 変換するテキストは、枠内をクリックし、変数{X}より %月初日% を選択します。
③ 生成された変数は 月初日 に変更し、元の変数を上書きするようにします。
④ テストしてみて、前のテキスト型変数からDatetime型に変換されました。

今回日付を取り出すという意味ではテキスト型でもDatetime型でも結果は同じですが、テキスト型はそのまま文字列となり、Datetime型は加減もできプロパティ活用もできるので汎用的です。

この逆は、「日時の値をテキスト値に変換」となります。適宜使いやすい方に合わせて変換していければ良いかと思いますので、こういうテクニックを知っておけばいろいろな工夫ができそうです。
また、この他に 「数値」⇔「テキスト」 もPADでは簡単に行えます。

まとめ

今回はカレンダー関連で良く使われる、Power Automate for desktop で月初日や月末日などの考え方について学びました。

① 今回は月初日や月末日などを算出するテクニックを学びました。
② また、翌月末日などにも応用ができることを学びました。
「テキスト型」「Datetime型」それぞれ変換ができることを知りました。
④ このブロックを使って他のフローにも組み込み応用できるテクニックを学びました

このテクニックは、他の資料作成などにも活用することができるので、打ち込む手間を省きたい時には工夫次第で効果を発揮します。

今回はここまでですが、次回「基礎⑥」にて翌月末が土日だったり、祝日だったりした場合における翌営業日としての考え方も勉強して行きましょう。 今回もお読みいただきありがとうございました。

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