任意の列で重複データがある場合、条件で1行だけ残したい

UiPath初心者です。
以下の表で、列「ごはん」に重複データがある場合、1行を残して残りを削除したいです。
残す行の選び方は、列「仕入先」の2文字目の数字が一番小さいものを残したいです。
資料の場合、カレーが3行重複していますが、仕入先の列において、1行目のA123が2文字目=1の為、3つの中で一番小さいのでこちらを残し、残り2行を削除したいです。

このような場合、どのように作れば良いのか分かりません。
教えて頂きたくよろしくお願いいたします。
image

こんなカスタムアクティビティの中に、「重複行削除_先頭行出力」ってアクティビティがあります。

2文字目の大小での並び変えは必要ですが。。。

1 Like

こんにちは

以下お試しください。

img20211201-2

dt = dt.AsEnumerable.GroupBy(Function(r) r("ごはん").ToString).Select(Function(g) dt.Clone.LoadDataRow({g.Key,g.OrderBy(Function(r) r("仕入先").ToString.Substring(1,1)).First().Item("仕入先").ToString},False)).CopyToDataTable

Main.xaml (8.5 KB)

2 Likes

はなっち!様
Yoichi様

いつも本当にありがとうございます。
Yoichi様のサンプルがそのまま使えそうだったので、今回はこちらでいかせて頂こうと思います。
はなっち!様が教えて下さったアクティビティ、勉強します!!

Yoichi様
作成致しました。
無事に削除出来ました。
ありがとうございます!!
実は元データの列は、2列ではなく、7列でした。
こちらを使わせて頂き、書き込みをすると、最初の2列は間違いなく出てきたのですが、
残り5列がタイトル行のみになっておりました。
どの部分に、残りの列を指定すれば良いのか教えて頂きたくよろしくお願いいたします。

1 Like

こんにちは

列数が多いなら、以下お試しください。

dt = dt.AsEnumerable.GroupBy(Function(r) r("ごはん").ToString).Select(Function(g) dt.Clone.LoadDataRow(g.OrderBy(Function(r) r("仕入先").ToString.Substring(1,1)).First().ItemArray,False)).CopyToDataTable
1 Like

ありがとうございます。
無事に完成しました。
いつも本当にありがとうございます。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.