パワークエリのM関数「Date.AddDays」のサムネイル
AさんAさん

特定の日付列を基準に、1日後の日付を計算したいです。
Power Queryエディター上で日付の日数のみ計算したい場合、どうしたら良いですか?

森田森田

その場合、M関数の「Date.AddDays」を使えば良いですよ!
では、詳細を解説していきますね。

森田貢士 公式LINEバナー

はじめに

この記事は「カスタム列」コマンドの詳細を把握していることが前提です。

参考記事

「カスタム列」コマンドの詳細は、以下の記事をご参照ください。

「Date.AddDays」の使いどころ

月末の日付に1日を追加して翌月1日を計算する等、特定の日付列を基準に日数だけ計算したいケースがありますが、Power Queryエディターには、日付列の日数を計算するためのコマンドがありません。

ワークシート上の関数でいえば、「DAYS」と類似のコマンドがないということですね。
DAYSの詳細は別途解説予定。

また、ワークシートと異なり、Power Queryエディターでは日付に数式で数値を加減算(月末日付+1等)することも不可能です。

Power Queryエディター上で日付列から指定の日数を計算した日付列を作成したい場合、「カスタム列」ダイアログ上で「Date.AddDays」を活用しましょう。

パワークエリのM関数「Date.AddDays」の使いどころ

Date.AddDaysを活用することで、選択した日付列から指定の日数を前後させた日付列を作成できます。

構文

Date.AddDaysの構文は以下の通りです。

Date.AddDays ( dateTime , numberOfDays )
指定された日を日付に追加します。

引数名必須データ型説明
dateTime日付、日付/時刻、日付/時刻/タイムゾーン開始日を示す日付列・日付/時刻列や定数を指定します。
numberOfDays数値引数「dateTime」に加減算したい日数を指定します。
※負の数を指定の場合、N日前を計算可能

引数「dateTime」がnullの場合、Date.AddDaysの戻り値もnullを表示。
引数「numberOfDays」に数値以外を指定した場合、Expression.Error表示。

参考記事

必要に応じ、Microsoft Learnの「Date.AddDays」の記事もご参照ください。

数式例・使用イメージ

「契約満了日」列から「次回契約開始日」列(「契約満了日」列の1日後の日付)を作成したイメージが以下です。

パワークエリのM関数「Date.AddDays」の使用イメージ

なお、この列のデータ型は、後続のステップの内容に応じ、「日付」・「日付/時刻」・「日付/時刻/タイムゾーン」のいずれかへ変更してください。

また、カスタム列で参照している日付列は不要であれば別途削除してください。

ステップ登録手順

「カスタム列」コマンドでDate.AddDaysを登録したい場合は、以下の手順となります。

パワークエリのM関数「Date.AddDays」のステップ登録手順

  1. リボン「列の追加」タブをクリック
  2. 「カスタム列」をクリック
  3. 任意の列名を入力
    ※今回は「次回契約開始日」
  4. 「d」を入力
  5. サジェストから「Date.AddDays」を選択し、「Tab」キーで確定
  6. 「(」を入力
  7. 開始日を示す日付列を選択
    ※今回は「契約満了日」列
  8. コンマ(,)を入力
  9. 任意の日数を入力
    ※今回は「1」
  10. 「)」を入力
  11. 「OK」をクリック

登録したステップの変更手順

Date.AddDaysのステップを後から変更する場合、以下の手順となります。

パワークエリのM関数「Date.AddDays」のステップ変更手順

  1. 「追加されたカスタム列」ステップの歯車マークをクリック
  2. 任意の箇所を修正
  3. 「OK」をクリック

手順①のステップ名は「カスタム列」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。
手順①はステップ名をダブルクリックでもOK。
手順①で起動した「カスタム列」ダイアログは、ステップに設定した内容がセットされた状態。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_PowerQueryデータ整形_Date.AddDays.xlsx

サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります(上記リンクから登録フォームへ遷移します)。

ブックを開いたら、「社員マスタ」クエリを編集(Power Queryエディター起動)し、次の手順を実施してください(今までの解説のまとめです)。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリック。

  1. リボン「列の追加」タブをクリック
  2. 「カスタム列」をクリック
  3. 任意の列名を入力
    ※今回は「次回契約開始日」
  4. 「d」を入力
  5. サジェストから「Date.AddDays」を選択し、「Tab」キーで確定
  6. 「(」を入力
  7. 開始日を示す日付列を選択
    ※今回は「契約満了日」列
  8. コンマ(,)を入力
  9. 任意の日数を入力
    ※今回は「1」
  10. 「)」を入力
  11. 「OK」をクリック

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

Date.AddDaysを活用することで、選択した日付列から指定の日数を前後させた日付列を作成できます。

一連の整形作業の中で、日付列の日数を計算した日付列を作成したい場合に活用してみましょう!

なお、パワークエリの各種テクニックは、私の拙著でも体系的に解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

Date.AddDaysに慣れたら、他の日付列の作成や計算に役立つM関数もチャレンジしてみましょう。
具体的には、年/月/日を示す3列から日付列を作成できる「#date」や、日付に指定の月数を加減算できる「Date.AddMonths」、日付の月の最終日を返す「Date.EndOfMonth」等です。
他にどんなM関数があるかは、Microsoft Learnの「Power Query M関数参照」も参照してみてくださいね!