UiPathでEXCELから読み込んだデータにフィルターをかけよう!
※2018.3よりUiPathがデフォルト日本語のアクティビティ名となりましたので、
この記事では各アクティビティや機能名を日本語名(英語名)というように記載しています。
また、「データテーブルをフィルタリング」アクティビティはUiPathのバージョンが2018.2以降でないと使用できませんのでご注意ください。
UiPathではEXCELアクティビティを使うことで、EXCELファイルから直接データを読み込むことができました。
今回は、応用として読み込んだデータ(datatable変数)をさらに加工してみましょう。
1.Excelファイルを読み込む。
前回の記事を参照して、test.xlsのファイルを読みこんでみましょう。
※中のデータは下記のようになっています。
TEST1 | TEST2 | TEST3 |
1 | あああ | 1000 |
2 | いいい | 2000 |
4 | ええええ | 4000 |
3 | うううう | 3000 |
2.「データテーブルをフィルタリング(Filter data table)」アクティビティを追加する。
Excel アプリケーションスコープ(Excel Application Scope)の次に、「データテーブルをフィルタリング(Filter data table)」アクティビティを追加しましょう。
なお、入力(Input)と出力(Output)に同じ変数を指定した場合は、入力(Input)で指定した変数に対してフィルターがかかりますので、
今回はその方法で設定します。
3.「フィルターウィザード(Filter Wizard)」でフィルタを設定する。
「データテーブルをフィルタリング(Filter data table)」アクティビティの中にあるフィルターウィザード(Filter Wizard)ボタンを押すと、
フィルターウィザード(Filter Wizard)が開きます。タブが2つあり、それぞれ違うフィルタを掛けることができます
フィルター行(Filter Rows)※データの行に対するフィルタ
設定する項目は上記を参照してください。
参考としてTEST2の列に「あああ」という文字が入っている場合の設定は下記のようになります。
+ボタンを押すとさらに条件を追加できます。
(複数条件の場合、すべて満たす場合はAND、どれか一つの場合はOrを選びます)
出力列(Output Columns) ※出力データ列に対するフィルタ
フィルタをかけたデータが出力される列を指定できます。
列名もしくは、番号で指定します。番号の場合はダブルクォーテーションはいりません。
なお、今回こちらは使用しません。
4.「範囲に書き込む(Write Range)」アクティビティ等で出力して確かめる
こちらを参考に、書き出してみましょう。
出力されたtest2.xlsは以下のようになっています。
(おまけ)
EXCELから読み込んだ数字に対してfilter条件に「<」や「>」を使うと、
範囲を読み込む(Read Range)アクティビティで読み込んだ際に自動で設定された型とうまく合わずにエラーになることが多いです。
この場合はあらかじめ数値型の列を作ったりする必要があるので、
データテーブルを構築(build data table)アクティビティを使い任意の型の列を持ったデータテーブル型変数を作る必要があり、
さらにそこへEXCELから読み込んだ仮のデータテーブル型変数からInt32.Parse()等を使って数値に変換という形でしょうか。
準備が非常に面倒なのでそれをやるぐらいならEXCELでやってしまったほうがよさそうです。
一見便利そうですがEXCELから使うことを考えた場合、こういうところが微妙です。
そのほかよく使うフィルター条件は以下になります。(ここは日本語化されていません)
・「~を含む」 = Contains
・「~から始まる」 = Starts With
・「~で終わる」 = Ends With
・「以外」 !=
このほかNotが付いているものは上記の逆となります。