Power Query で「シート単位」のデータを読み込み、担当者を絞り込む方法

Power Query ではブック全体だけでなく、特定シートを直接データソースとして扱えます。本記事では、外部 Excel ブックのシート “SheetSales” を読み込み、Staff 列が “Hayashi Taro” の行のみ抽出する M コード例と操作手順を解説いたします。


目次

使用シナリオ

項目内容
参照ブックC:\Data\SalesData.xlsx
対象シートSheet 名: SheetSales
フィルター列Staff
抽出条件Staff 列 = “Hayashi Taro”

M コード(詳細エディターに貼り付ける)

let
    // 対象ブックを読み込み
    XlFile   = File.Contents("C:\Data\SalesData.xlsx"),

    // Excel.Workbook 関数で全オブジェクトを展開し、
    // kind が "Sheet"、Name が "SheetSales" のテーブルを取得
    Source   = Excel.Workbook(XlFile, true)
                {[Name = "SheetSales", Kind = "Sheet"]}[Data],

    // 担当者が "Hayashi Taro" の行のみ抽出
    Filtered = Table.SelectRows(Source, each [Staff] = "Hayashi Taro")
in
    Filtered

操作手順

  1. Power Query の起動
    • Excel メニュー「データ」タブ → 「データの取得」→「ファイル」→「Excel ブック」から、SalesData.xlsx を選択します。
    • ナビゲーターが表示されたら、左下の 「データの変換」 をクリックし、Power Query エディターへ進みます。
  2. 詳細エディターで M コードを置換
    • 画面上部「ホーム」リボン → 「詳細エディター」を開き、上記 M コードを全て貼り付けます。
    • 「完了」を押すと、プレビューに担当者が“Hayashi Taro”の行のみが表示されます。
  3. データの読み込み
    • プレビューを確認後、「閉じて読み込む」を押すと、シートまたはテーブルとして結果が配置されます。

M コードの解説

ステップ説明
File.Contents指定パスのブックをバイナリとして読み込みます。ネットワーク経由の場合も同様です。
Excel.Workbookブック内のシート・テーブル・名前付き範囲を一覧として返します。第 2 引数 true は型推論の有無を示します。
[Name = "SheetSales", Kind = "Sheet"]目的のシートをリストから抽出し、[Data] で本体データを取得します。
Table.SelectRowsStaff 列の値でフィルター処理を行います。複数条件は andor で拡張できます。

応用ポイント

目的実装例
日付列で最新月のみ抽出each [Date] >= Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(), -1))
必要列のみ残すTable.SelectColumns で列名を配列指定し、不要列を除外します。
フォルダー内の複数ブックを統合Folder.Files を用いて各シートを展開し、Table.Combine で結合します。

まとめ

  • シート単位で読み込む場合は、Excel.Workbook の返すリストから Kind = "Sheet" を指定すると確実です。
  • 担当者など可変の抽出条件は文字列部分のみを変更することで再利用性が向上します。
  • 取り込んだ後は Power Query の更新機能で再読込が可能なため、月次・週次のデータ確認が効率化されます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次