エクセルで
日時 祝日
2020/1/1
2020/2/1
2020/3/1
のデータテーブルがあったとした
別のエクセルに作ってある祝日カレンダーを読み込み
祝日カレンダーの日付と合致すれば○を入力する
という流れでフローを作りたいです。
なかなかうまくいかないので
アドバイスお願いします。
エクセルで
日時 祝日
2020/1/1
2020/2/1
2020/3/1
のデータテーブルがあったとした
別のエクセルに作ってある祝日カレンダーを読み込み
祝日カレンダーの日付と合致すれば○を入力する
という流れでフローを作りたいです。
なかなかうまくいかないので
アドバイスお願いします。
まずは祝日カレンダーのデータを作成してもしくは[http://office-qa.com/Excel/Holiday.xlsx]からダウンロード)
これがあったら
普通に元々のデータテーブルと祝日カレンダーのデータテーブルでfor each row 又は linq を使って書込みできると思います。
「データテーブルの結合を」アクティビティを利用しても可能ですね。
ただ、Excel側で「日時」とあるので、時刻情報も持ってるとなると、一度日付だけにしないとダメかもしれませんね
HANACCHI さん、
ご返事ありがとうございます。
そうですね。まぁ色々やり方がありますのですが、私の個人的にはlinqよく使います。なぜというと 処理スピードが速いし、カスタマイズ的が高いですね。
皆様返信ありがとうございます。
自分で作成してみました。
【使う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)
デバッグではなく実行でお試しいただけばと思います。(速度)が違うので)
いつもありがとうございます。
試してみたいと思います。
おかげさまでできました。ありがとうございました。
解決後のコメントですいません。
以前に同じようなことがしたくて、以下の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.