除外リストを元にして、不一致のものだけクエリで抽出してみよう。これができれば、この逆パターンももちろんできるようになる。
この手の処理は、単純には「クエリのマージ」を実行するだけでできる。
サンプル画像の場合は「商品テーブル」から「除外テーブル」にないものだけを残してデータを読み込む。なので、まずは2つのテーブルからクエリを「接続のみ」で作成する。
書式を設定したテーブルを選択した状態で [データ]→データの取得と変換の[テーブルまたは範囲から] [ホーム]→[閉じて読み込む]→[閉じて次に読み込む] →[接続の作成のみ] これを「商品テーブル」と「除外テーブル」の2回行う。
続いて、クエリのマージをブック上から行う。
[データ]→データの取得と変換の[データの取得] [クエリの結合]→[マージ]
上段のコンボボックスから「商品テーブル」を選択 下段のコンボボックスから「除外テーブル」を選択 結合の種類を「左反(最初の行のみ)」にして[OK] 作成された「除外テーブル」列を選択して削除
後は読み込むだけ。
因みに、結合の種類のデフォルトは「左外部」になっている。この状態でも、結合したテーブルを展開して「null」の行を選択すれば同じ結果になる。
[ファイル]→[閉じて読み込む]→[閉じて次に読み込む]
データを返す先を[既存のワークシート]にして読み込み先のセルを指定→[OK]
以上。マウスの操作だけでできるので非常に簡単。
下はおまけ。「該当列をリストにして除外リストを作成」→「元のテーブルにマージして他の列を展開」した場合。
リストA = List.Buffer(商品テーブル[商品名]),
リストB = List.Buffer(除外テーブル[商品名]),
除外リスト = List.RemoveItems(リストA, リストB),
テーブル変換 = Table.FromColumns({除外リスト}, type table [商品名=text]),
クエリのマージ = Table.NestedJoin(
テーブル変換, {"商品名"}, 商品テーブル, {"商品名"}, "マージ"
),
見出し = List.Difference(Table.ColumnNames(商品テーブル), {"商品名"}),
マージ列の展開 = Table.ExpandTableColumn(クエリのマージ, "マージ", 見出し)
必要があるかは分からないけど、せっかくやってみたので一応。