Enterprise Blue Ocean ◮

神谷町RPAブログ

  • [特集] Blue Prism の製品概要がよくわかるWebページ動画取材記事
  • [特集] Blue Prism DX にある、Blue Prismの部品一覧はこちら
  • [特集] Blue Prism でExcelを操作する記事はこちら
  • [特集] Blue Prism のベストプラクティス記事はこちら
  • Blue PrismのQ&Aを掲示板(teratail)でやりませんか?

Blue PrismでExcelを操作する<詳細版⑨> 列の値の重複を排除する

年末がそこそこ忙しかったけど、
年始もそれなりに働いているというか、
私、こんな働き者キャラだったっけ??

なんだかんだと理由をつけては仕事をさぼって同僚とコンビニに行く、

そういうキャラだった気がするんだけどなぁ。

 

Blue Prismで特定の列の値が重複している行を削除する

今回のテーマは重複削除です。

英語だとRemove Duplicatesですね。

Excelで可能な操作なので、ExcelをWindowsアプリとして操作すれば可能です。

ebo.hatenablog.com

この記事では、VBOベースで実現してみましょう。

 

重複をチェックして印をつけ、フィルタする

重複削除のやり方は、rpa forumにも挙がっていました。

Remove duplicate in Excel (Loop stage)

やり方はたぶん、いろいろあるのだと思います。

この記事では、かつて私が社会人一年生のころにやっていた泥臭いアルゴリズムでやってみようと思います。

(当時ってExcelに重複削除の機能はなかったんかな。。知らなかっただけか)

アルゴリズムは以下のようなものです。

  1. 重複をチェックする列の値で表をソート(並び替え)する
  2. チェック用の列を増やす
  3. 重複をチェックする列の値を一行ずつチェックして、直下の値と同じだったら、チェック用の列の値に重複ありのフラグを立てる(最後の行は、常に重複なし)
  4. 3.をすべての行に繰り返し行う
  5. チェック用の列の値でフィルターする
  6. チェック用の列削除する

言葉で書いてもわかりにくい。実際にやってみます。

 

やってみた

オブジェクトの1アクションとして実装してみました。

コーディングなしです。

f:id:EnterpriseBlueOcean:20190108173648p:plain

処理の流れは以下の通り。

まず、入力されるコレクションは、こんな感じにしました。

f:id:EnterpriseBlueOcean:20190108174244p:plain

最初に、重複をチェックする対象の列(ここではField2)の値でソートします。

f:id:EnterpriseBlueOcean:20190108174558p:plain

ソートには Utility - Collection Manipulation Sort Collection が使えます。

ebo.hatenablog.com

重複チェックのための列(ここではDuplicateCheck)を追加します。

f:id:EnterpriseBlueOcean:20190108174715p:plain

列の追加はちょっとクセがあります。。以下も参照ください。

ebo.hatenablog.com

一行ずつ値を調べ、直下の値と同じだったTrue(重複)、違っていたらFalse(重複でない)と書き込んでいきます。

f:id:EnterpriseBlueOcean:20190108174844p:plain

最後の行は、比較対象がなく、常に重複なし(False)にします。

全行について調べ終わったら、重複チェックのための列の値をFalseでフィルタします。

f:id:EnterpriseBlueOcean:20190108184909p:plain

Falseだらけの列を削除して出来上がりです。

f:id:EnterpriseBlueOcean:20190108185149p:plain

 

まとめ

  • Blue Prismで重複を削除する方法は複数ある
  • 泥臭いアルゴリズム/ノンコーディングで実装してみた。できた
  • 表の構造を操作する系の処理なら、だいたいのことはできる気がしてきた

昔、人が少ないことを良いことに、職場で利き茶をやった結果、
伊右衛門の味とお~いお茶の味がそっくりで驚いた。

…そんなキャラだったのになぁ。