不要なレコード(行)を削除する方法(フィルター)[Power Query(パワークエリ)基礎]
AさんAさん

Power Queryで整形したい表から必要なレコード以外は削除したいのですが、Power Queryエディターのリボン上で表の中の行を削除するためのコマンドが見当たりません。。
この場合、どうしたら良いですかね?

森田森田

その場合、Power Queryエディターのプレビューウィンドウ上で「フィルター」を使えば良いですよ!

具体的な使い方について解説していきますね。

はじめに

本題に入る前に、この記事がおすすめな方を挙げてみます。

  • 表の中の不要なレコードの削除を自動化したい方
  • データ整形・加工の工程が複数あり、かつその作業が定期的に発生する方
  • Power Query(パワークエリ)の使い方を習得したい方

前提条件

この記事のテクニックを使うためには、以下の条件を満たす必要があります。

  • ExcelのバージョンはExcel2010以降(Microsoft365含む)が必須
  • Excel2010/2013ユーザーの場合、事前にMicrosoft社公式HPよりPower Query(パワークエリ)のダウンロードが必要(Excel2016以降は標準機能)
  • Power Query(パワークエリ)の概要を理解していること
    →まず、以下の記事で概要を把握することをおすすめします。

不要なレコードを削除したい場合は「フィルター」が有効

以下のように、データ整形を行うにあたり、元データの中で必要なレコードが部分的なケースがあります。

こうした場合、Power Queryエディター上でフィルターを利用し、必要なレコードだけ残るように条件設定すればOKです。

すると、整形後にワークシートへ出力したテーブル上では、不要なレコードが削除された状態になります。(整形後のテーブル上ではフィルター解除できない)

最初は感覚が掴みにくいかもしれませんが、Power Queryエディター上のフィルター条件は「レコードの削除条件」だと思った方がイメージしやすいかもしれませんね。

では、Power Query(パワークエリ)でのフィルターの設定手順を確認していきましょう。

Power Query(パワークエリ)でのフィルターの設定手順

今回の前提として、フィルター設定を行う対象テーブルはブック内にあり、事前にPower Queryエディターに取り込んでいる状態からスタートするとします。(ブック内のデータ取得について復習したい方は下記記事を参照)

まず、フィルターを設定したい列のフィルターボタンをクリック(①)します。

続いて、任意の条件を設定(②)し、OK」をクリック(③)して完了です。

【注意】元データへ今後更新される内容を考慮してフィルターの条件設定を行うこと

チェックボックスでフィルター条件を設定した場合、Power Query上では「指定の値と等しい」という条件で記録されます。(「クエリの設定」ウィンドウでフィルターのステップをダブルクリックすると確認可能)

つまり、上記の例ではカテゴリが「野菜」に完全一致したレコードだけ残るような条件になっているということです。

ここで、注意しないといけないのは、現時点での元データではこれで良いですが、今後元データのカテゴリに「フルーツ」「野菜」以外の種類が増えた場合に、整形後のテーブルに残すレコードの条件がこのままで良いか、ということです。

仮に、カテゴリが増えても「野菜」完全一致のみで良ければ問題ないですが、「フルーツ」以外のレコードを残す、あるいは「野菜」が含まれるレコードを残すなどの場合、元データの整形作業の自動化が中途半端になってしまいます。

こうしたことを踏まえると、フィルター条件の設定は「行のフィルター」ダイアログで行うと良いですね。

「行のフィルター」ダイアログは、任意の列のフィルターボタンをクリック後に表示される「テキストフィルター」「数値フィルター」「日付フィルター」経由から起動できます。
この3種類のフィルターは、列のデータ型に応じていずれかが表示される仕様です。

各フィルターでフィルター条件の候補を選択でき、任意のものをクリックすることで「行のフィルター」ダイアログが起動します。

参考までに、3種類のフィルターの条件を以下へ記載します。

【参考】テキストフィルターの条件

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値で始まる
  • 次の値で始まらない
  • 指定の値で終わる
  • 次の値で終わらない
  • 指定の値を含む
  • 指定の値を含まない
【参考】数値フィルターの条件

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値より大きい
  • 指定の値以上
  • 指定の値より小さい
  • 指定の値以下
  • 指定の値の間
【参考】日付フィルターの条件

  • 指定の値に等しい
  • 次の値より前
  • 次の値より後
  • 指定の値の間
  • 次の
  • 前の
  • 最も早い
  • 最も遅い
  • 最も早いものではない
  • 最も遅いものではない
  • 四半期
  • カスタムフィルター
「行のフィルター」ダイアログの設定方法

1段目左のボックスはフィルター条件に該当しますが、このダイアログを起動する前に選んだものが、ダイアログ起動時にセットされています。

あとは、その右側のボックスへ任意の値を指定すればOKです。

もし、同一の列で複数条件を設定したい場合は、1段目の下にあるオプションボタン(ラジオボタン)で「および」と「また」の任意の方を選び、2段目のボックスへ1段目と同じ要領で条件を設定してください。

ちなみに、「および」はAND条件(1段目と2段目の条件を両方満たした場合)、「また」はOR条件(1段目と2段目の条件のいずれかを満たした場合)となります。

なお、3つ以上の条件を設定したい場合は、本記事下部にある応用編の解説記事をご覧ください。

「プレビュー」ウィンドウ上で必要なレコードのみ表示されていることを確認できたらOK

「プレビュー」ウィンドウを見ると、無事フィルターの条件に合致したレコードのみ表示されていますね!

あとは、その他の処理を行い、任意の方法でデータを出力すれば完了です。

【参考】フィルター条件を変更したい場合は

もし、あとでフィルター条件を変更したい場合は、「クエリの設定」ウィンドウの任意のステップをダブルクリック、もしくは歯車マークをクリックしましょう。

すると、再度「行のフィルター」ダイアログでフィルター条件が設定された状態で起動します。

あとは、任意の条件を設定し直して、再度「OK」ボタンをクリックすれば良いですね。

【応用編】複数の列でフィルター条件を設定することも可能!

ここからは「行のフィルター」ダイアログの応用テクニックです。

もし、複数の列でフィルター条件を設定したい場合、「行のフィルター」ダイアログの上部にあるオプションボタン(ラジオボタン)の「詳細設定」を選択しましょう。

すると、任意の列もプルダウン選択することができますので、該当の条件を設定してください。

なお、この「詳細設定」画面であれば、同一の列でも複数の列でも、3つ以上の条件を設定することが可能です。(3つ以上の条件は「句の追加」をクリックして設定欄を増やします)

高度なフィルター条件を設定したい場合は、こちらで設定してください。

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

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

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

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

ファイルを開いたら、フィルター操作を行う前に、Power Queryエディターを起動させてくださいね。
ブック起動時、「セキュリティの警告」メッセージが表示された場合は「コンテンツの有効化」をクリックしてください。

  1. リボン「データ」タブをクリック
  2. 「クエリと接続」をクリック
  3. 「商品マスタ(フィルター)」クエリをダブルクリック

ここまで準備ができたら、次の手順を実施してください。(今までの解説のまとめです)

  1. フィルターを設定したい列のフィルターボタンをクリック
  2. 任意の条件を設定
  3. OK」をクリック

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

さいごに

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

フィルター操作はPower Query(パワークエリ)における基本中の基本のテクニックです。

データ整形時はもちろん、複数のシートやブックのデータ取り込みの際にも活用する機会は多いため、知っておくとより広範囲の作業を自動化できますよ!

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

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

森田森田

Power Query(パワークエリ)エディター上でのフィルターの操作感はワークシートの表で使い慣れていれば、同じ感覚で設定できるはずです。

あとは、フィルターをかけることで、出力した整形後のテーブルにおいては削除に該当するということだけ、感覚的にイメージできれば問題ないですよ!

ぜひ、これを機にフィルターを使いこなしてくださいね。