Quantcast
Channel: なんでもエクセル(Nandemo Excel)
Viewing all articles
Browse latest Browse all 45

Power Query:重複している行を抽出する

$
0
0

簡単かと思ってやってみたら、意外と苦戦するかもしれません。「重複を省いて抽出」ではなく「重複している行を抽出」したい場合、どうすればいいでしょうか。

こういう時、エクセル感覚だと「それぞれの行に、一つ上までの行を参照する COUNTIF関数を仕込んで……」みたいな発想になりがちですが、これを Power Queryに持ち込むと碌なことになりません。間違っても、List.Generateや List.Accumulateを使わないようにしましょう。こういう時は「最初にグループ化」がマストです。

例によって左側のテーブルは、「テーブル1」としてクエリを作成済みとします。

let
    ソース = テーブル1,
    行のグループ化 = Table.Group(
        ソース, {"列1"}, {"テーブル", each _, type table}
    ),
    リスト抽出 = List.Select(
        行のグループ化[テーブル], each Table.RowCount(_)>1
    ),
    テーブル変換 = Table.Combine(リスト抽出)
in
    テーブル変換

グループ化については、「行のカウント」でやると抽出はしやすいものの、後で基準となる列以外はどうするのかという話になります。今回は「すべての行」をグループ化するほうがいいでしょう。

このやり方なら、数十万件でも数秒で抽出できます。Microsoft365なら数式でやってもいいと思いますが、数式を使って、COUNTIFを並べるようなやり方は金輪際やめたほうがいいです。


Viewing all articles
Browse latest Browse all 45

Trending Articles