日付でのフィルタの使い方

UiPath初心者です。
F列で過去・未来を仕分けしたく、
データテーブルをフィルタリングを使用しましたが出来ませんでした。
どのようにすれば過去日と、未来日を今日(当日)を軸に仕分け出来ますでしょうか。

image

こんにちは

例えば以下参考になるかと思います。

1 Like

おはようございます。
早速のご回答ありがとうございます。
実はこちらの書き込みを金曜日に試したのですが、、
3時間くらいしても上手くできず。。。
無知が悲しいです。。

こんにちは

データテーブルをフィルタリングアクティビティ以外ですと以下でも可能です。

filteredDt = dt.AsEnumerable.Where(Function(r) DateTime.Parse(r("完成希望日").ToString) > new DateTime(2020,11,20)).CopyToDataTable()

New DateTimeの引数と等号の向きを変えれば、条件を変更できます。またこの部分を変数に置き換えることもできます。
ただし上記は抽出件数が0件の場合はエラーになりますので、その際はもう少し工夫が必要になります。

1 Like

こちらにもご回答頂き本当にありがとうございます。

質問させてください。
new DateTime(2020,11,20)

ここの部分なのですが、このrobot使用都度、今日現在の日付と比較し過去・未来に
分けたいのですが、ここの日付は毎回変更することになるのでしょうか。

画面共有が出来ないのですが、データテーブルをフィルタリングで出来たのでお伝えします。

代入で、文字列変数にToday.tostring(yyyy)を入れる
文字列をintegerに変換で数値化する

代入で文字列変数にToday.tostring(MM)を入れる
文字列をintegerに変換で数値化する

代入で文字列変数にToday.tostring(dd)を入れる
文字列をintegerに変換で数値化する

ここまでのyなどはダブルクォーテーションで囲ってください。

これで、今日の年と月と日が数値の変数に代入されました。

次にExcelアプリケーションスコープで①テーブルを読み込んで、データテーブル変数を作ります。
②データテーブルをフィルタリングの入力に作ったばかりのデータテーブル変数を入れ、出力にも同じものを入れます。
フィルターウィザードを出します。
フィルター行のタブを選びます。
行フィルターモードは保持を選びます。
列にA列なら数値の0を入れます。
F列なら5かと思います。
操作に<=や>=など好みの条件をプルダウンします。
値にNew DateTime()といれ、括弧の中に最初に作成した数値の変数を年,月,日の順で書き込みます。
フィルタリングはここで終わりです。
③範囲に書き込みを使って、お好きなシートにデータテーブル変数を書き込みます。

①から③はすべてExcelアプリケーションスコープの中に配置します。

以上となります。私の手元では成功しましたが、如何でしょうか。
ちなみに、YOICHさんが貼り付けてくださったリンクを見て作成しました。

1 Like

ご回答ありがとうございます。
複雑すぎて理解が難しいのでじっくり時間をかけて読んでいきます。
取り急ぎお礼まで。

こんにちは

今日が基準になるなら、この部分は以下のように代わりに Now や Today が使えます。

DateTime.Parse(r("完成希望日").ToString) > Today
1 Like

ご回答頂きありがとうございます。
早速活用させて頂いたのですが、このようなエラー表示が出てしまいました。

こんにちは

手元の環境ではエラーが発生していませんので、もう一度式を入力しなおす、代入アクティビティを
設置しなおす等試してもらえないでしょうか?

ありがとうございます。
私の式の書き方かと思っていました。
変更します。
明日になってしまいますが、変更結果をまた報告させてください。
本当にありがとうございます。

おはようございます。
ファイルごと削除し、作り直してみましたが以下の通りエラーが出ます。
代入の式の書き方が悪いのか心配になりましたので、もう一度私の式を見て頂けないでしょうか。
頂いた式の new DateTime(2020,11,20)) の部分を Today) に 変更しています。

image

こんにちは

取り急ぎの確認になりますが、完成希望日の列に日付以外のものあるいは空欄等が入っていませんでしょうか?

1 Like

おはようございます。
早速のご確認ありがとうございます。
yyyy/mm/ddの日付のみになっております。

こんにちは

原因の切り分けのために
エラーの発生している代入の前に、以下の式のメッセージボックスまたは一行書き出し等で
内容を確認いただけないでしょうか?

String.Join(",",dt.AsEnumerable.Select(Function(r) r("完成希望日").ToString))
1 Like

ありがとうございます。
このような結果が返ってきました。
きちんとdtを作れていないということでしょうか。。
image

こんにちは

ありがとうございます
最初のレコードがブランクのように見えます。
元データ確認いただけますでしょうか?

1 Like

ありがとうございます。

タイトル行で、セルの結合がされてるのですが、
原因になっていますでしょうか。

また、結合が原因の場合、結合解除し、
範囲の指定で、現在 ”” の所を
2行目から下 と指定することになると思うのですが、
下 の範囲が 都度追記になるのでフリーにしたいのですが、
どのように指定すれば良いでしょうか。

こんにちは

取り急ぎ空欄を無視する式に修正しました。元のワークシートのままで以下お試しください。

dt.AsEnumerable.Where(Function(r)  r("完成希望日") IsNot Nothing AndAlso  (not String.IsNullOrEmpty(r("完成希望日").ToString())) AndAlso DateTime.Parse(r("完成希望日").ToString) > Today).CopyToDataTable()
2 Likes