型Stringの1次元配列の値をSystem.Data.DataTableに変換するには

こんにちは。
UiPath Studio 2022.4.6を利用しているユーザーです。
Excelシートに記載されている複数条件をフィルターにかけるため、下記の通りに作成しました。
⑤にて変数Bに下記のエラーが出ます。対処法をご教示いただけないでしょうか?
エラー「型Stringの1次元配列の値をSystem.Data.DataTableに変換できません」
① 変数AにExcelシートに記載されている複数条件を代入。
②変数B=変数A.Split(","c)
③対象Excelファイルの中にあるシートからデータを読み取る
④元のデータをコピーして新しいテーブルを作成
⑤ForEachで変数B内の各要素を繰り返す
(繰り返しはconditionとする)
⑥元テーブルの中から、“A” 列の値が conditionと一致する行だけを選び出し、その結果を filterResultTable に入れる
⑦filterResultTableの内容をResultTableに代入

やりたいことはデータテーブルの抽出ですか?
データテーブルの抽出であれば、LINQを使うのが簡単ですよ。(代入アクティビティ1行ですみます)

例えば、列名が(“読み”)と仮定するとdt1からdt2に(“読み”).ToString = "おおさかし"の行を抽出するのは下記コードです。AndAlsoまたはOrElseでつなげば複数条件で抽出できます。

dt2=dt1.AsEnumerable.Where(Function(row) row("読み").ToString = "おおさかし").CopyToDataTable()

こんにちは

ForEachアクティビティではなくForEachRowアクティビティを使用しているのではないでしょうか?ForEachアクティビティを使ってTypeArgumentをStringにしてみてはと思います。

1 Like

ご返信ありがとうございます。
やりたいことはデータテーブル抽出です。
細かく記載すると、抽出したExcelデータの内、指定された所属コードをフィルターで選択して削除したい。削除後はフィルターはついたままにしておきたい。
削除する[所属コード]は、情報.xlsxにカンマ区切りで記載されている。
情報.xlsxを用意する理由は、削除する対象の所属コードが変わるかもしれないのでExcelで所属コードを変更すればロボットが正常動くにしたいため。
です

削除は抽出の反対の動作になるので、Notで否定すれば削除になります。
例えば、(“所属コード”)="12345"の行を削除してdt1からdt2に行を抽出するのは下記コードになります。

dt2=dt1.AsEnumerable.Where(Function(row) Not row("所属コード").ToString = "12345").CopyToDataTable()

回答が役立ったらSolutionにチェックをお願いします。 :smiley:

ここの意味があいまいです。1つのセル内に複数の所属コードがカンマ区切りで入っているのでしょうか?それとも1つの列に縦に所属コードが並んでいるのでしょうか?

1つのセルに複数の所属コードがカンマ区切りで入っています

そのような複雑なデータの持ち方は今後の保守を考えると止めた方が良いとは思いますが、
現状でやるなら、セルの値をstr_varに取得後

arr_str = System.Text.RegularExpressions.Regex.Split(str_var, ",")
arr_str = arr_str.Where(Function(x) Not String.IsNullOrWhiteSpace(x)).ToArray

上記2行を代入アクティビティで実行するとarr_strが出来上がるので、

arr_str をForEachアクティビティで回すしかないですね。
Yoichi様アドバイスどおり、間違ってForEachRowアクティビティを使っていないか、TypeArgumentをStringにしているか確認してください。

ありがとうございます。
ご指摘の通り、ForEachRowを使用していました。

今後の保守として、情報.xlsxに記載されている所属コードに追加・削除するだけで良い仕様にしたく。
現状だと、想像通りに加工したいExcelが加工されておらず、、

以下にて表題のエラーは解消しないでしょうか?

この件は分かりました。
ForEachアクティビティの引数の型(TypeArgument)をStringにしてみて、この障害は直りました?
回答が役立ったらSolutionにチェックをお願いします。 :grinning_face:

エラーは解消しました!
ありがとうございます。

ForEachアクティビティの引数の型(TypeArgument)をStringでエラーは解消されました。
ありがとうございます。