パワークエリのフィルターのサムネイル
AさんAさん

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

森田森田

その場合、Power Queryエディター上の「フィルター」を使えば良いですよ!
では、詳細を解説していきますね。

Excelステップ講座

解説動画:【パワークエリ#6】データクレンジング基本テクニック13選 – 元データを綺麗にするための不備修正の作業を自動化する

この記事の内容は下記の動画でも解説しています。

コメント欄の「フィルター」の部分をクリックすると該当の解説へジャンプできますよ!

はじめに

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

参考記事

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

「フィルター」の使いどころ

フィルターは、クエリの新規作成ステップのうち、STEP2の「取得データを整形/加工(Transform)」に該当する機能です。

フィルターのスコープ

クエリ内の一連の整形作業の中で任意の条件に一致するレコードのみを残したい(それ以外のレコードを削除したい)場合、Power Queryエディター上のフィルターを使いましょう。

フィルターの使いどころ

Power Queryエディター上のフィルターを活用することで、任意のフィルター条件に一致したレコードを保持し、それ以外のレコードをすべて削除することが可能です。
ワークシート上のフィルターと異なり、Power Queryエディターのフィルターを設定することで非表示のレコードは削除したと見なされ、STEP3の処理結果のテーブル側には表示されない。

参考記事

ワークシート上のフィルターの詳細は、以下の記事をご参照ください。

使用イメージ

「カテゴリ」列を対象にフィルターを使用し、「フルーツ」と等しくないレコードのみを残し、それ以外を削除したイメージが以下です。

フィルターの使用イメージ

Power Queryエディター上でフィルター条件を設定したステップを登録できました。
フィルターの場合、デフォルトのステップ名は「フィルターされた行」になる(クエリ内で2つ目以降の「フィルターされた行」ステップは連番が付加)。

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

これにより、クエリに記録したフィルターのステップを自動化できます。
フィルターのステップ登録後、フィルター対象の列名を変更すると、クエリ更新時にエラーになるため注意(対処法は、後述の「登録したステップの変更手順」を参照)。

参考記事

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


ステップ登録手順

フィルターのステップを登録したい場合は、以下の手順となります。

フィルターのステップ登録手順

  1. フィルター条件を設定したい列のフィルターボタンをクリック
  2. テキストフィルター or 数値フィルター or 日付フィルター等をクリック
    ※今回は「テキストフィルター」
  3. 任意のフィルター条件(演算子)を選択
    ※今回は「指定の値と等しくない」
  4. 任意のフィルター条件(値)を入力 or 選択
    ※今回は「フルーツ」
  5. 「OK」をクリック

手順②~④は、今後手順①の列に新たな値(アイテム)が追加されても問題ないフィルター条件を設定すること。
手順②~④をチェックボックスで設定した場合、チェックONにしたアイテムに対して「指定の値に等しい」という条件が設定されたとみなされる。
手順②は、手順①の列のデータ型によって表示されるフィルターの種類が変わる(詳細は後述)。
手順④を選択したい場合、ボックス右側の「▼」をクリックすることで、既存のアイテムを選択可能。
フィルター条件を複数条件にしたい場合、手順④のタイミングで「および」or「また」を選択し、下側の条件も設定すること。

「行のフィルター」ダイアログの種類

フィルターのステップ登録手順②のフィルターの種類は、手順①の列のデータ型によって変化します。

データ型別の詳細は以下の通りです。

テキストフィルター

データ型が「テキスト」、または指定されていない場合は「テキストフィルター」です。

テキストフィルター

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値で始まる
  • 次の値で始まらない
  • 指定の値で終わる
  • 次の値で終わらない
  • 指定の値を含む
  • 指定の値を含まない

数値フィルター

データ型が「10進法」、「通貨」、「整数」、「パーセンテージ」の場合は「数値フィルター」です。

数値フィルター

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値より大きい
  • 指定の値以上
  • 指定の値より小さい
  • 指定の値以下
  • 指定の値の間

日付/時刻フィルター

データ型が「日付/時刻」の場合は「日付/時刻フィルター」です。

日付/時刻フィルター

  • 指定の値に等しい
  • 次の値より前
  • 次の値より後
  • 指定の値の間
  • 次の
  • 前の
  • 最も早い
  • 最も遅い
  • 最も早いものではない
  • 最も遅いものではない
  • 四半期
  • カスタムフィルター

日付フィルターと同じ条件(演算子)。

日付フィルター

データ型が「日付」の場合は「日付フィルター」です。

日付フィルター

  • 指定の値に等しい
  • 次の値より前
  • 次の値より後
  • 指定の値の間
  • 次の
  • 前の
  • 最も早い
  • 最も遅い
  • 最も早いものではない
  • 最も遅いものではない
  • 四半期
  • カスタムフィルター

時間フィルター

データ型が「時刻」の場合は「時間フィルター」です。

時間フィルター

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値より大きい
  • 指定の値以上
  • 指定の値より小さい
  • 指定の値以下
  • 指定の値の間
  • 最も早い
  • 最も遅い
  • 最も早いものではない
  • 最も遅いものではない

日付/時刻/タイムゾーンフィルター

データ型が「日付/時刻/タイムゾーン」の場合は「日付/時刻/タイムゾーンフィルター」です。

日付/時刻/タイムゾーンフィルター

  • 指定の値に等しい
  • 次の値より前
  • 次の値より後
  • 指定の値の間
  • 次の
  • 前の
  • 最も早い
  • 最も遅い
  • 最も早いものではない
  • 最も遅いものではない
  • 四半期
  • カスタムフィルター

日付フィルターと同じ条件(演算子)。

期間のフィルター

データ型が「期間」の場合は「期間のフィルター」です。

期間のフィルター

  • 指定の値に等しい
  • 指定の値と等しくない
  • 指定の値より大きい
  • 指定の値以上
  • 指定の値より小さい
  • 指定の値以下
  • 指定の値の間

数値フィルターと同じ条件(演算子)。

論理フィルター

データ型が「True/False」の場合は「論理フィルター」です。

論理フィルター

  • 指定の値に等しい
  • 指定の値と等しくない

【参考】「行のフィルター」ダイアログの詳細設定

「行のフィルター」ダイアログに用意されている「詳細設定」を活用すると、応用的なフィルター条件を設定できます。

具体的には、フィルター条件の要素を2つの観点で増やすことが可能です。

  • フィルター条件を3種類以上に増やすことが可能
  • フィルター条件ごとに対象列を設定可能

フィルターの詳細設定

「行のフィルター」ダイアログの詳細設定を活用することで、複数列を対象としたフィルター条件も1ステップで実現できます。

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

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

フィルターで登録したステップのフィルター条件を後から変更する場合、以下の手順となります。

フィルターのステップ変更手順

  1. 「フィルターされた行」ステップの歯車マークをクリック
  2. 任意のフィルター条件を再設定
  3. OK」をクリック

手順①のステップ名は、フィルターのデフォルトの名前(自身でリネームしている場合は別表記)。
フィルターの対象列を変更したい場合、手順②で「詳細設定」を選択し、該当の条件の「列」ボックスを変更する。

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

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

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

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

  1. フィルター条件を設定したい列のフィルターボタンをクリック
  2. テキストフィルター or 数値フィルター or 日付フィルター等をクリック
    ※今回は「テキストフィルター」
  3. 任意のフィルター条件(演算子)を選択
    ※今回は「指定の値と等しくない」
  4. 任意のフィルター条件(値)を入力 or 選択
    ※今回は「フルーツ」
  5. 「OK」をクリック

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

さいごに

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

フィルターは、任意のフィルター条件に一致したレコードを保持し、それ以外のレコードをすべて削除できます。

データ整形時はもちろん、複数のシートやブックのデータ取得時にも活用する機会は多いため、エディター上の基本操作の1つとしてしっかり理解しておきましょう!

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


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

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

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

森田森田

フィルターに慣れたら、余計な行の削除に役立つ他のコマンドもセットで覚えると良いです。
たとえば、重複レコードを削除する「重複の削除」コマンドや、表の上下の不要な行を削除する「上位の行の削除」・「下位の行の削除」コマンドです。
不要な行/列のデータは早めに削除することで、データ量を最小化でき、後続の他の整形作業や、集計/分析の作業効率も上がりますよ!