祝日を判断させたい

エクセルで
日時 祝日
2020/1/1
2020/2/1
2020/3/1
のデータテーブルがあったとした
別のエクセルに作ってある祝日カレンダーを読み込み
祝日カレンダーの日付と合致すれば○を入力する
という流れでフローを作りたいです。

なかなかうまくいかないので
アドバイスお願いします。

まずは祝日カレンダーのデータを作成してもしくは[http://office-qa.com/Excel/Holiday.xlsx]からダウンロード)
これがあったら
普通に元々のデータテーブルと祝日カレンダーのデータテーブルでfor each row 又は linq を使って書込みできると思います。

「データテーブルの結合を」アクティビティを利用しても可能ですね。

ただ、Excel側で「日時」とあるので、時刻情報も持ってるとなると、一度日付だけにしないとダメかもしれませんね

HANACCHI さん、

ご返事ありがとうございます。

そうですね。まぁ色々やり方がありますのですが、私の個人的にはlinqよく使います。なぜというと 処理スピードが速いし、カスタマイズ的が高いですね。

1 Like

皆様返信ありがとうございます。
自分で作成してみました。
【使うEXCELファイル】
元データ.xlsx 祝日リスト.xlsx
【流れ】
EXCELアプリケーションスコープ
元データ.xlsx
範囲を読み込み(dtへ格納)
シート名 “データ”
繰り返し各行
要素 row コレクション dt
EXCELアプリケーションスコープ
祝日リスト.xlsx
範囲を読み込む(holidayに格納)
シート名"祝日リスト"
繰り返し各行
要素 祝日リストrow コレクション holiday
条件分岐
condition row(“日時”).tostring =
祝日リストrow(“休み”).tostring
then→代入 row(“日時)=“○”
Else→代入 row(“日時”)=” "
と作ってみましたが、元データと祝日リストの読み込みがずっとループしてしまい、先にすすみません。
ちなみに、元データはA1からA500000まであります。
条件分岐の条件も、これじゃ無理だろうなと思いつつ
とりあえず入れている状況でございます

こんにちは

この手の話は、2つのデータ群のそれぞれの大きさ、重複があるか、ソート可能かの条件で最適な実装が異なってきます。

上記の単純な2重ループは計算量が多くなるので、上記の可否を判断しながら実装するのが良いです。
取り急ぎの実装案として祝日データだけをソートした案を添付します。
(データ数が50万件なら元データも一度ソートしてからチェックして、再度元の順番に戻したほうが良いかもしれませんが..)

Sample20200703-1.zip (25.2 KB)

デバッグではなく実行でお試しいただけばと思います。(速度)が違うので)

いつもありがとうございます。
試してみたいと思います。

おかげさまでできました。ありがとうございました。

1 Like

解決後のコメントですいません。

以前に同じようなことがしたくて、以下のXamlファイルを作り、公開しています。

https://connect.uipath.com/ja/marketplace/components/frkrzph01saux115kxmb3r

祝日の判定は、
・祝日のカンマ区切り結合文字列(例:2020/1/1,2020/1/2)を作成
・対象日が上記のリストにに含まれているか(Containsメソッド)
で判定していました。

ちなみに、Uipathの繰り返しアクティビティは大量データを扱う場合は処理が遅いので、InvokeCodeを使ってループすると早くなることが多いです。

参考まで。

わざわざありがとうございます。

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