IDごとの最新バージョンの行全体を残す

製品ごとに最も大きいバージョン番号を求め、IDとバージョンで元の表に結合します。最新の状態や価格を、行ごと取り出せます。

説明図:Q1の旧版・最新版2件とQ2の記録を含む元のVersions表
架空のデータを使った説明図です。実際の画面キャプチャではありません。

最大のバージョン番号を求めるだけでは、その行の状態や価格は残りません。製品ごとの最大値を保存し、製品IDとバージョンの両方で元表に結び直すと、ほかの列も残せます。

最大値だけでは残らない情報

Versionsが架空の元表、Latestが第1段階で保存する集計結果です。Latestを手入力する手順ではありません。Q1の最大バージョン3には状態と価格が異なる2行があり、両方を残します。

Versions

ProductID Version State Price
Q1 1 draft 10
Q1 3 active 14
Q1 3 review 15
Q2 2 active 20

Latest

ProductID LatestVersion
Q1 3
Q2 2

最大値を保存して元表に結び直す

  1. Versionsだけを読み込み、Versionが数値型であることを確認します。文字列のままでは10と2の順序が変わる場合があります。
  2. 「結果を整理」を開いて「集計」を追加し、ProductIDをまとめる項目にします。Versionの「最大値」を選び、結果の項目名にLatestVersionと入力します。「適用」を押し、Q1=3、Q2=2の2行を確認します。この一覧を次の結合条件に使うため、Excelファイルに保存します。
  3. 新しい作業に元のVersionsと保存したLatestを読み込みます。前段階の集計を残したまま明細を取得しないでください。
  4. ProductID同士をつなぎ、さらにVersionとLatestVersionも結んで「一致する行のみ」を選びます。製品IDが同じで、バージョンがその製品の最大値と一致する明細だけが残ります。
  5. Latestの2列は目のアイコンで非表示にできます。元のState・Priceを含む次の3行が残ることを確認します。

最大値を保存して元表に結び直す 説明図

最新バージョンの行が複数あれば、すべて残る

Q1のバージョン1は除かれ、バージョン3の2行が残ります。IDだけで結ぶと古いバージョンも戻るため、Versionの条件が必要です。Latestは製品ごとに1行にします。

ProductID Version State Price
Q1 3 active 14
Q1 3 review 15
Q2 2 active 20

最新バージョンが同率の行も残る 説明図

必ず1行にしたい場合の注意

同じ最大バージョンの行が複数ある場合、どれか1行だけが自動で選ばれることはありません。1行に絞るには、更新時刻や記録IDなど、選ぶ基準を別に決める必要があります。また、この手順は数値のバージョン番号を対象としており、v1.2のような表記にはそのまま使えません。元データを更新したら、集計・保存・再読み込みからやり直してください。

自分のファイルで始めましょう

JOIN SHEETを使ってみる ↗

Excel・CSVの作業はPCでご利用ください。
新しいタブで開くため、作業中のデータは置き換わりません。

サンプルの検証日:

出典

How do i filter out rows to only keep the highest number from a column in power query (Reddit r/excel)

原文は製品ごとに最も高いバージョンの行を、ほかの属性とともに残す方法を質問しています。 上の表と手順は、この質問を参考に別途作成した架空の例です。質問者の実データや製品の利用体験ではありません。