残りの人生は~シラフで~

断酒をした事で生まれたシラフの時間に、思う事を書いていきます

Power Query 重複レコードの削除

仕事中、ちょっとした作業依頼が舞い込みました。

 

概要としては・・・

・エクセルの中で

・名前が重複している金額リストがあって

・高い金額のレコードだけ抜き出して欲しい

と言ったもの。

 

楽勝ですね。

 

イメージしたのは、金額を降順に並び替えて、

あとはテーブル操作で重複を削除する、もの。

 

考えるに、一瞬で終わりそう。

 

さっそく作業に取り掛かり、ここぞとばかりに

Power Queryを使って着手。

 

一瞬で作業は終わり、結果吐かれてきたリストを検証。

・・・・ん?

思ってるのと違うな。

 

重複は削除されているものの、

金額の高い方が残っていたり、残っていなかったり。

 

調べたところ、どうやらメモリの中の読み込みの都合、

そのままやっただけでは並び替えの順序性が担保されない模様。

 

で、ちゃんと対策はありました。

 

 

 

まずはサンプルを提示します。

ChatGPTさんに、架空の飲料メーカーの

商品リストを書き出してもらいました。

 

リストの中では、いくつか価格違いの商品が重複しています。

 

これを普通にPower Queryの中で処理させてみると、失敗します。

 

・価格降順で並べ替え

・商品名の重複を削除

 

※オレンジジュースは140円が高い方

 

 

対策1 関数を付け足す

 

対策方法のひとつは、関数のちょい足しです。

 

並び替えの箇所のコードを、このように修正します↓

 

元コード: = Table.Sort(変更された型, {{"価格", Order.Descending}})

修正コード: = Table.Buffer(Table.Sort(変更された型, {{"価格", Order.Descending}}))

 

 

これにより、価格の高い方がきちんと残りました。

 

 

対策2 「グループ化」機能を使う

 

グループ化のキーにする<商品名>列を選択して、

「変換」タブの「グループ化」を選択。

 

設定ウィンドウでこのように設定します。

 

<価格>列の「最大」行でまとめると言うイメージですね。

 

ちなみに、操作方法は「最大」以外にもいくつかあり、

それぞれ色々使えそうな予感です。

 

 

やりたかった、重複削除が叶いました。

 

この後、グループ化の結果をクエリのマージで

戻してあげると良いかも。

 

 

 

いやー、ホントPower Queryは便利ですね!

そして、まだまだ知らない機能もあります。

 

今回で言えば、グループ化は初めて知りました。

普通のエクセルで言うグループ化とは、ずいぶん機能が違いますね。

 

不意の作業依頼はいい勉強になります!