フィルターが上手く掛かりません

UiPath初心者です。
以下のようなデータテーブルがあります。
image

列「EPI結果」で 「Measured mass」 もしくは 「登録なし」
を含むデータテーブル ①
含まないデータテーブル② を作りたいです。

①分類されました。
image

②結果が出ませんでした。
一部、該当行は削除されていましたが、一部、削除されていませんでした。
image

解決策を教えて頂きたくよろしくお願いいたします。

こんにちは

数値行だけを抽出またはその逆であれば、内容が数値かどうかを判断したほうが良いかと思います。

数値として認識できるものだけを残すなら

dt=dt.AsEnumerable.Where(Function(r) Information.IsNumeric(r("EPI結果").ToString)).CopyToDataTable

になります。逆は

dt=dt.AsEnumerable.Where(Function(r) not Information.IsNumeric(r("EPI結果").ToString)).CopyToDataTable

になります。結果が0行の場合は、別途対応が必要になります。

2 Likes

例えば別問い合わせに関連して、
Try~Catchの中で「EPI結果」*10000をして、ExceptionをCatchして、エラーだったら「単位変換後面積」に-1を設定。エラーでなければ「単位変換後面積」にはその答えを。。。

その計算後、-1かどうかでフィルターを掛けるというのも、一考かと。。。

1 Like

ありがとうございます。
なるほど!
そういう考え方があるのですね。
大変勉強になります。
式も作って頂きありがとうございます!!

お疲れ様です。
子供の用事等で実際に動かすのが遅くなっておりました。
本日、作ってみたのですが、期待通りに動きません。
間違い箇所を教えて頂きたくよろしくお願いいたします。


【希望】数値以外を残す = 「Measured mass」 もしくは 「登録なし」 のデータにする
【結果】
数値行が基準は不明ですが、6行削除された状態でした。
image


【希望】 数値のみ残す
【結果】 文字列ではないものが3行だけ消えたが、重複行が3行出来た

こんにちは

実データが無いので可能性になりますが、
例えばデータテーブル内の数値データの先頭に ' あるいは前後に余分な空白 がついていることはありませんでしょうか?
もしそうであれば、

dt=dt.AsEnumerable.Where(Function(r) Information.IsNumeric(r("EPI結果").ToString.Trim("'"C).Trim)).CopyToDataTable

のようにする必要があります。

1 Like

こんにちは

フィルター前後で、出力を確認しましたが、正常に動作しているように見えます
ご確認ください。

img20210325-4

1 Like

ありがとうございます。
きつねにつままれた気分です。
出来てますね。
ありがとうございます!!

1 Like

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