工事中です

Share on facebook
Share on twitter
Share on linkedin

UiPath Datatable PrimaryKeyを設定してVLOOKUP関数のように検索する

主キー(PrimaryKey)とは?

DataTableには主キーと呼ばれる重複のない列、軸となる列を設定することができます。イメージとしては「No」といった連番の数字、もしくは簡単なテーブルなら「氏名」など。もしくは氏名は重複が存在する可能性があるので「電話番号」などが主キーとなる可能性もあります。

サンプルとして、以下のようなDatatableが存在するとします。

このDataTableの列「電話番号」を主キーとして、電話番号に紐づく列「氏名」を出力したい場合、どうすればいいでしょうか?イメージとしてはExcelのVLOOKUP関数で電話番号を元に氏名を参照する感覚です。それではやってみましょう。

DataTableに主キーを設定

まず上記画像のようなアクティビティ「データテーブルを構築」で顧客名簿のようなDataTable型「Dt」を出力します。その後にAssignアクティビティでDtに主キーを設定しましょう。


詳細のコードは以下の通りです。

'---左辺
DataTable型.PrimaryKey
'---右辺
New DataColumn(){DataTable型.Columns.Item("電話番号")}

何が起こっているのかローカルパネルを見てみる

PrimaryKey(主キー)?PrimaryKeyについてイメージが追い付いていない方もいらっしゃると思いますので、ここで一度デバッグをしてみましょう。
この画像はまだPrimaryKeyを(主キー)を設定していない画面です。ローカルパネルのPrimaryKeyを見てみると、DataColumn[0]{} つまり何も存在しないことが示されています。

ここでもう一歩ステップインして主キーを代入してみましょう。
するとPrimaryKeyの中に値DataColumn[1]{[電話番号]}が記載されているのがわかります。

このようにDataTable型変数には様々な要素が含まれています。DataTable.Columnsと記載すれば列関連、DataTable.Rowsと記載すれば行関連の要素が出力されます。それと同じようにDataTable.PrimaryKeyという要素に詳細を記載した、ということです。

Findを使ってDataTableからVLOOKUPのように検索する

では次にFindを使ってDataTalbeから要素を検索してみましょう。
はじめに、DataTableから電話番号「0761101503」を検索し、列「氏名」を出力してみたいと思います。期待値としては「岡田常男」が出力されます。

まず変数「電話番号」作成し、検索したい電話番号を設定します。今回は”0761101503”を設定してみましょう。

代入アクティビティの詳細は以下になります。

'---左辺
氏名

'---右辺
Dt.Rows.Find(電話番号).Item("氏名").ToString
Dt.Rows.Find("PrimaryKey列から検索したい文字列").Item("参照先の列名").ToString

最後にデバッグをして通してみましょう。1行書き込みに変数「氏名」が出力されれば成功です。

UiPath DataTable PrimaryKey 概要

無事に出力されました。

UiPath DataTable PrimaryKey 出力結果

目次