任意の文字列の場所を取得したい(複数条件)

UiPath初心者です。
添付のようなデータテーブルで、
メニュー:オムライス
番号:3
の2つの条件と一致する行カウントを取得したいです。

どのようにすれば良いか教えて頂きたくよろしくお願いいたします。

image

Hi @miwa_yamamoto

You can filter out the data table with filter data table activity.

Thank you,
Prashant

1 Like

コメントありがとうございます。

私の説明不足かも知れませんが、
データテーブルの上から数えた行カウントが欲しいのですが、フィルターで取得することが出来るのでしょうか。
今回の場合であれば、
オムライス・3 が5行目なので 0からカウントならば「4」 1からカウントならば「5」が欲しいです。

Hi @miwa_yamamoto

In that case use for each data table activity.
And in the property of for each data table provide variable this will give the index of the current row.

Inside the for each use if condition for “Omelet”
and check the index variable.

If you facing any problem please share the excel. i will share you the XAML file.

1 Like

こんにちは

以前の応用で
結果が単独で必要な場合は、

dt.AsEnumerable.Select(Function(r,i) if(r("メニュー").ToString="オムライス" AndAlso r("番号").ToString="3",i,-1)).Where(Function(i) i>=0).First()

あるいは、リストで取得したい場合は

dt.AsEnumerable.Select(Function(r,i) if(r("メニュー").ToString="オムライス" AndAlso r("番号").ToString="3",i,-1)).Where(Function(i) i>=0).ToList()

でいかがでしょうか?

1 Like

ありがとうございます!

単独で行カウントが欲しかったので1番目の文を使わせて頂きます。
自分でandalso を追加したのですが、全くうまく行きませんでした。
本当にありがとうございます。

以下のような書き方もあります。
結果の行番号は「0」始まりで「-1」なら条件に該当する行がありません。

1)SELECTで抽出した行がデータテーブルの何行目か?

dt_メニュー.Rows.IndexOf(dt_メニュー.Select("[メニュー] ='オムライス' AND [番号] = 3").FirstOrDefault)

2)LinqのWhereで抽出した行がデータテーブルの何行目か?

dt_メニュー.Rows.IndexOf(dt_メニュー.AsEnumerable().Where(Function(r) r("メニュー").ToString = "オムライス" And r("番号").ToString = "3").FirstOrDefault)

間違ってたらスイマセン。

2 Likes

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