Uipath初心者です。
レベルが低い質問かもしれませんが、教えてほしいことがあります。
データテーブル型の変数に対して、アクティビティ:「データ行を削除」で複数行を一気に削除したいと思っています。
①:1行目~3行目を削除する場合、行インデックスにどのような書き方をすればOKでしょうか?
("1:3"のような書き方をしてもダメみたいです)
②:1行目、3行目だけを削除(=2行目は残す)場合、行インデックスにどのような書き方をすればOKでしょうか?
分かる方がいれば教えて頂けると幸甚でございます
@anon65243384 様
①「 繰り返し(各行)」でデータテーブルをループさせて消す。
②①と方法は同じですが、「条件分岐」を使用して消す消さないを判断する。
だと思います。
@ytakayama 様
ご返信ありがとうございます!
なるほど、、、
アクティビティ:「データ行を削除」だけでは、複数行を削除できないことでしょうか?
@anon65243384 様
そうですね。「データ行を削除」アクティビティの入力プロパティを見ると
行か行インデックスしか入力として選択できないため不可能だと思います。
(コレクション型が入力として可能であればできたかもしれませんが)
このような記載を見つけました。
ForEach(各行)じゃなくてこちらで実装する必要があるかもしれません。
※私以外の方がいい方法を知っているかもしれないので、もう少し待たれると良いと思います。
1 Like
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
5
①:1行目~3行目を削除する場合は、データ行の削除で、行インデックスに0を入れたのを三回繰り返す。
⇒データ行の削除で、1行目を削除すると、2行目が1行目になるのですね。ですので先の例で「行インデックスに0」「行インデックスに1」「行インデックスに2」なんてやってしまうと、全然違うものを消してしまいます。
⇒EXCELのシートの削除と同じで、「行インデックスに2」、「行インデックスに1」、「行インデックスに0」のように、大きい方から消していくと、1行目~3行目を削除したことになります。
②:1行目、3行目だけを削除する場合も①の方法同様、「行インデックスに2」、「行インデックスに0」ってやればいいですね。
ただ、現実的ではないので、行を消すのではなく、別のデータテーブルに必要な行を追加するって考え方もありかなと思いますよ。
削除するデータ量、残すデータ量で、処理方法を検討してみてくださいませ。
1 Like
Yoichi
(Yoichi)
6
こんにちは
そもそも何らかの条件の元で行を削除したいのであれば、データテーブルのフィルタリングアクティビティで不要な行を削除することを検討した方が良いかと思います。
もしindex番号を指定したい場合はループを構成する以外にも、例えば以下の方法でも削除できます。
0始まりの2行目と4行目を削除する場合(実質3,5行目)、代入(Assign)アクティビティを使って、
arrInt = {2,4}
dt = dt.AsEnumerable.Where(function(r) not arrInt.Contains(dt.Rows.IndexOf(r))).CopyToDataTable
ここでarrIntはInt32[]
型、dtはDataTable型です。