# Filter Data Tableでワイルドカードを利用したい

**URL:** <https://forum.uipath.com/t/filter-data-table/204605>\
**Category:** フォーラム\
**Tags:** datatable, activities\
**Created:** [March 20, 2020, 9:00am UTC](https://forum.uipath.com/t/filter-data-table/204605 "2020-03-20T09:00:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quinone](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/quinone/32/176796_2.png) [@Quinone](https://forum.uipath.com/u/Quinone)\
**Post date:** [March 20, 2020, 9:00am UTC](https://forum.uipath.com/t/filter-data-table/204605/1 "2020-03-20T09:00:35Z")

</div>

Filter Data Tableでワイルドカードを利用して検索したいと思います。  
マスターの列が5列あり、抽出するテーブルを変えながら抽出条件を変えながら  
行いたいと考えています。

対象のテーブルの列はすべて同様ですが同一のマスターで検索したいため  
検索対象外の列はワイルドカードにしたいです。  
"\*"としてもうまくいきません。

ご教示お願いします。

---

<div class="post-metadata">

**Author:** ![HANACCHI](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/hanacchi/32/85375_2.png) [@HANACCHI](https://forum.uipath.com/u/HANACCHI)\
**Post date:** [March 20, 2020, 9:11am UTC](https://forum.uipath.com/t/filter-data-table/204605/2 "2020-03-20T09:11:58Z")

</div>

条件でlikeって無かったでしたっけ？

---

<div class="post-metadata">

**Author:** ![Quinone](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/quinone/32/176796_2.png) [@Quinone](https://forum.uipath.com/u/Quinone)\
**Post date:** [March 20, 2020, 9:23am UTC](https://forum.uipath.com/t/filter-data-table/204605/3 "2020-03-20T09:23:12Z")

</div>

ありがとうございます。  
Filter Data Tableにはございませんでした。

 ![filter](https://global.discourse-cdn.com/uipath/original/3X/1/1/113d738bb3873da12580c8599f326e1584b296c9.jpeg)

---

<div class="post-metadata">

**Author:** ![HANACCHI](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/hanacchi/32/85375_2.png) [@HANACCHI](https://forum.uipath.com/u/HANACCHI)\
**Post date:** [March 20, 2020, 10:42am UTC](https://forum.uipath.com/t/filter-data-table/204605/4 "2020-03-20T10:42:28Z")

</div>

あぁ、そういえばＬｉｋｅではできないって書き込みが過去にあったような。。。

となると、新しい列を挿入して、ＬＩＫＥの結果をフラグとして立てて、その列でフィルタを掛けるとか。。。

うぅ～んごめんなさい

---

<div class="post-metadata">

**Author:** ![kyd\_has](https://avatars.discourse-cdn.com/v4/letter/k/73ab20/32.png) [@kyd\_has](https://forum.uipath.com/u/kyd_has)\
**Post date:** [March 23, 2020, 3:37am UTC](https://forum.uipath.com/t/filter-data-table/204605/5 "2020-03-23T03:37:57Z")

</div>

Filter Data Tableでワイルドカードを利用して検索したいとありますが、HANACCHIさんの言う通り、Filter Data TableアクティビティにはLikeがないようです。  
そのため正面からではなく小細工が必要かと思います。

回避策1：.netを使用する

このアクティビティとほとんど同様の効果があるものにDatatableのselectメソッドがあります。

以下が参考になるかと

> **[【UiPath】データテーブルから目的のレコードを抜き出す｜cloudy](https://note.com/_cloudy_/n/n237d4f613406)**
>
> UiPathでWebページからData Scrapingしたあと、 ①補足説明のような余分な行を削除したい ②特定のカラムの値でフィルタリングしたい ときにどうするの？っていうので参考になるものがなかったので、ちょっと整理しておく。 ExtractDataTableにデータが入っているという前提で、Column1の値がProductAになっているものだけに絞り込みたい場合は、Assignアクティビティで ...

> [@データテーブル型変数から特定の値のみ残すor作成したい](https://forum.uipath.com/t/or/150473):
>
> 2回目の投稿となります。 現在データスクレイピングにてデータテーブル型に変数を格納しているのですが、その変数から特定の値が含まれている列のみ抽出したいと考えております。 自分で調べた限り、以下のメソッドが確認できましたが、上手く抽出できません。 – .Select(“Column4 = ‘値’”).CopyToDataTable() – 方法が御座いましたらご教授頂きたく存じます。 以上、宜しくお願い致します。

※1 条件の結果0件の場合はそのままではエラーが出るので以下も参考に

> [@DataTableを条件でフィルタし、0件の場合のエラー回避](https://forum.uipath.com/t/datatable-0/120418):
>
> DataTableを条件でフィルタし、何件か求めたいです。 dtName.Select(“Name like ‘Tanaka’”).CopyToDataTable().Rows.Count.ToString 1件以上の場合は大丈夫ですが、0件の場合に下記のエラーになります。 0件の場合はどう処理すれば良いのでしょうか。 1 行を書き込み: ソースには、DataRow が含まれていません。

※2 私の環境でもCopytoDataTableがエラーになりましたので、もしなる場合は以下を参考に

> [@CopytoDataTableが使えない](https://forum.uipath.com/t/copytodatatable/74751):
>
> 現在、excelからデータを抜き出して加工しようとしていますが、データを.Selectで抽出したのちに .CopytoDataTableで整形しようとしても候補にCopytoしか出てこず、手打ちでCopytoDataTableと 入力しても「CopytoDataTableは"Syatem.Array"のメンバーではありません」とエラーが出てしまいます。どうしたら使えるようになるでしょうか。

> **[Uipath datatableで特定の列だけ抜き出す - Qiita](https://qiita.com/monolith8/items/5e934150a9525fa2f12f)**
>
> プロジェクトのxamlにSystem.Data.DataSetExtensionsを追加しCopyToDataTab…

※3 条件が複数になる場合は遅くなる場合があるそうなので注意です。

> **[DataTable 操作のパフォーマンスが上がった話 | Tech Blog | CRESCO Tech Blog](https://www.cresco.co.jp/blog/entry/6016.html)**
>
> CRESCO Engineers' BlogのDataTable 操作のパフォーマンスが上がった話をご覧いただけます。

回避策2：仕様を見直す

> 対象のテーブルの列はすべて同様ですが同一のマスターで検索したいため  
> 検索対象外の列はワイルドカードにしたいです。  
> "\*"としてもうまくいきません。

とありますが、これは、単純に条件としてフリーとしたいだけなのでしょうか？  
もしそうなら、Filter Data Tableの列名と値を変数に格納して

Filter Data Tableの定義は以下とし

col1 = val1  
and col2 = val2  
and col3 = val3  
and col4 = val4  
and col5 = val5

全部有効の場合は  
col1 = DT01.Columns(0).ColumnName  
col2 = DT01.Columns(1).ColumnName  
col3 = DT01.Columns(2).ColumnName  
col4 = DT01.Columns(3).ColumnName  
col5 = DT01.Columns(4).ColumnName

val1 = row(0).tostring  
val2 = row(1).tostring  
val3 = row(2).tostring  
val4 = row(3).tostring  
val5 = row(4).tostring

等とし、例えばcol5のみ条件を無効にしたいなら

col1 = DT01.Columns(0).ColumnName  
col2 = DT01.Columns(1).ColumnName  
col3 = DT01.Columns(2).ColumnName  
col4 = DT01.Columns(3).ColumnName  
col5 = DT01.Columns(0).ColumnName

val1 = row(0).tostring  
val2 = row(1).tostring  
val3 = row(2).tostring  
val4 = row(3).tostring  
val5 = row(0).tostring

として、条件を重ねてしまうのはいかがでしょうか。

※内容としてずれている回答であればすいません。。。
