パワークエリの「年」・「月」・「日」・「曜日名」コマンドのサムネイル
AさんAさん

表の日付の列から年や月等の部分だけ取得したいです。
Power Queryエディター上で取得する場合、どうしたら良いですか?

森田森田

その場合、Power Queryエディター上の「年」・「月」・「日」・「曜日名」コマンドを使えば良いですよ!
では、詳細を解説していきますね。

Excelステップ講座

はじめに

この記事はパワークエリの概要を把握していることが前提です。

参考記事

パワークエリの概要については、以下の記事をご参照ください。

「年」・「月」・「日」・「曜日名」の使いどころ

「年」・「月」・「日」・「曜日名」コマンドは、クエリの新規作成ステップのうち、STEP2の「取得データを整形/加工(Transform)」に該当する機能です。

「年」・「月」・「日」・「曜日名」コマンドのスコープ

機能自体は、ワークシート上の関数の「YEAR」「MONTH」「DAY」「WEEKDAY」と似ています。

クエリ内の一連の整形作業の中で、日付列の一部を取得したい場合に「年」・「月」・「日」・「曜日名」コマンドを使いましょう。

パワークエリの「年」・「月」・「日」・「曜日名」コマンドの使いどころ

「年」・「月」・「日」・「曜日名」コマンドを活用することで、選択した日付列から任意の要素(年/月/日/曜日)を取得できます。

参考記事

ワークシート上の関数の「YEAR」・「MONTH」・「DAY」・「WEEKDAY」の詳細は、以下の記事をご参照ください。




使用イメージ

「入社日」列から「年」を取得する新しい列を追加したイメージが以下です。

パワークエリの「年」・「月」・「日」・「曜日名」コマンドの使用イメージ

Power Queryエディター上で「年」を取得するステップを登録できました。
リボン「列の追加」タブの「年」コマンドの場合、デフォルトのステップ名は「挿入された年」になる(クエリ内で2つ目以降の「挿入された年」ステップは連番が付加)。
※その他のコマンドも「挿入された○」となる(○にコマンド名)。

リボン「変換」タブの「年」コマンドの場合、デフォルトのステップ名は「抽出された年」になる。
※その他のコマンドも「抽出された○」になる(○にコマンド名)。

後は、クエリ新規作成ステップのSTEP2で必要な他ステップを登録したら、STEP3を行いましょう。

これにより、クエリに記録した「年」・「月」・「日」・「曜日名」コマンドのステップを自動化できます。
「年」・「月」・「日」・「曜日名」コマンドのステップ登録後、取得対象の列名を変更すると、クエリ更新時にエラーになるため注意(対処法は、後述の「登録したステップの変更手順」を参照)。

参考記事

クエリの新規作成ステップのSTEP2に役立つ各種コマンドの詳細は「パワークエリ(Power Query)の記事一覧」を、STEP3の手順はパワークエリの概要記事をご参照ください。


ステップ登録手順

「年」・「月」・「日」・「曜日名」コマンドのステップを登録したい場合、コマンドにより手順が若干異なります。

「年」コマンド

「年」コマンドの場合、以下の手順となります。

「年」コマンドのステップ登録手順

  1. 取得対象の日付列を選択
    ※今回は「入社日」列
  2. リボン「列の追加」タブをクリック
  3. 「日付」をクリック
  4. 「年」をクリック
  5. 「年」をクリック

手順①で選択した列のデータ型が「日付」・「日付/時刻」・「日付/時刻/タイムゾーン」以外の場合、手順④以降は非活性となる。
手順①の列を上書きしたい場合、手順②はリボン「変換」タブをクリック。
※同じコマンドだが、手順①の列を月の整数で上書きする。

「月」コマンド

「月」コマンドの場合、以下の手順となります。

「月」コマンドのステップ登録手順

  1. 取得対象の日付列を選択
    ※今回は「入社日」列
  2. リボン「列の追加」タブをクリック
  3. 「日付」をクリック
  4. 「月」をクリック
  5. 「月」をクリック

手順①で選択した列のデータ型が「日付」・「日付/時刻」・「日付/時刻/タイムゾーン」以外の場合、手順④以降は非活性となる。
手順①の列を上書きしたい場合、手順②はリボン「変換」タブをクリック。
※同じコマンドだが、手順①の列を月の整数で上書きする。

「日」・「曜日名」コマンド

「日」・「曜日名」コマンドの場合、以下の手順となります。

「日」・「曜日名」コマンドのステップ登録手順

  1. 取得対象の日付列を選択
    ※今回は「入社日」列
  2. リボン「列の追加」タブをクリック
  3. 「日付」をクリック
  4. 「日」をクリック
  5. 「日」 or 「曜日名」をクリック
    ※今回は「日」

手順①で選択した列のデータ型が「日付」・「日付/時刻」・「日付/時刻/タイムゾーン」以外の場合、手順④以降は非活性となる。
手順①の列を上書きしたい場合、手順②はリボン「変換」タブをクリック。
※同じコマンドだが、手順①の列を月の整数で上書きする。

手順⑤は、取得したい内容によって使い分け。

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

「年」・「月」・「日」・「曜日名」コマンドで登録したステップを後から変更する場合、以下の手順が異なります。

「年」・「月」・「日」・「曜日名」コマンドのステップ変更手順

  1. 「挿入された○」 or 「抽出された○」ステップを削除(「×」をクリック)
  2. 再度「年」・「月」・「日」・「曜日名」コマンドのステップ登録手順を実行

手順①のステップ名は、「年」・「月」・「日」・「曜日名」コマンドのデフォルトの名前(自身でリネームしている場合は別表記)。

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

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

サンプルファイル_PowerQueryデータ整形_日付.xlsx

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

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

  1. 取得対象の日付列を選択
    ※今回は「入社日」列
  2. リボン「列の追加」タブをクリック
  3. 「日付」をクリック
  4. 「年」をクリック
  5. 「年」をクリック

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

さいごに

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

「年」・「月」・「日」・「曜日名」コマンドを活用することで、選択した日付列から任意の要素(年/月/日/曜日)を取得できます。

既存の日付列から取得した要素を新しい列に追加することで、年別や月別等の集計ができるようになるため、ぜひ覚えましょう!

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


また、よりコアな情報を発信していくために「公式LINE」を開始しましたので、ご興味があれば以下バナーから友だち追加をお願いします!
特典として、Excelワークシート関数一覧(計22スライド)やExcelショートカットキー一覧(計25スライド)等をプレゼント!

森田貢士の公式LINEへの友だち追加告知用バナー

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

森田森田

「年」・「月」・「日」・「曜日名」コマンドに慣れたら、他の日付列の計算に役立つコマンドやM関数もセットで覚えることをおすすめします。
具体的には、日付間の日数を計算できる「日数の減算」コマンドや、年/月/日の整数を示す複数列から日付列を作成できるM関数の「#date」です。
M関数はカスタム列からセットできますが、応用的な日付計算を行う場合に役立つため、パワークエリに慣れてきたらチャレンジしてみてください!