Timespan型で、24時間を超える足し算をしたいです。

UiPath初心者です。
残業時間の足し算をしようと思っています。
image

問題点
➀24時間を超える時間は表記桁数が異なっているので、以下のエラーとなる。
image

②timespan型は、23時間までなので、24時間を超える足し算方法が分からない。
残業時間なので、115時間45分 など、時間と分で算出したいです。

解決方法を教えて頂きたくよろしくお願いいたします。

こんにちは

ReadRangeで書式維持オプションをONして読み込むとした場合

総合計秒は

totalsec = dt.AsEnumerable.Select(Function(r) System.Text.RegularExpressions.Regex.Match(r("残業時間").ToString,"(\d+)*:?(\d+):(\d+)", System.Text.RegularExpressions.RegexOptions.RightToLeft).Groups.Cast(Of System.Text.RegularExpressions.Group).Skip(1).Select(Function(g,i) if (Int32.TryParse(g.Value,New Int32),Int32.Parse(g.Value)*CInt(Math.Pow(60,2-i)) ,0)).Sum).Sum

となり、

totalSec \ 3600 で時間
(totalSec mod 3600) \ 60 で分が算出できます。(\ は半角の¥に読み替えてください)

書式維持オプションなしでも処理できるのですが
一点確認事項があり、例えば7:15という入力はEXCEL上どのようになっていますか?
表記上は7:15ですが、7時間15分と解釈されている場合があるのでその点の確認です。
数式バーの部分で確認できます。
あるいは文字列なら、上記の式がそのまま使えると思います。

1 Like

ありがとうございます。

Excelでの表示は以下の通りになっております。
image

まずは、書式維持オプションONで読み込みからやろうと思ったのですが、
私の説明不足で、元データがcsvデータでした。
この場合、どうなりますでしょうか。

こんにちは

これが厄介で、EXCEL上では7時間15分と認識されています。
このまま読み込むとUiPath側では、やはり7時間15分にしかなりませんので
数値として読み込むときは、これの工夫:例えば00:07:15と入力いただくとかが
必要になってきます。

元の書式がCSVでしたら、ReadCSVで読み込んだものなら、おそらく上記の式で
そのまま処理ができると思います。

1 Like

ありがとうございます。
理解が悪く、イマイチ分かっていないのですが
24:30:00を試しに数式バーで見てみると、こちらの通りになっておりました。
image

この状態で、先程頂いた式を入れると合計されるということでしょうか。

こんにちは

問題は、7:15 とあるものは、7分15秒として入力されているかと思いますが、
エクセルでは7時間15分と認識されていることです。
24:30:00 の方は、エクセルの日時の基準日時が1899年12月31日ですので、1900/1/ 0:30:00と
いうのは、そこから24時間30分経過した値として、解釈としては問題ありません。

前者の方は、エクセル上で意図した値として認識されていない点で問題があるということです。

CSVからの読み込みの場合、上記のエクセルの解釈が入りませんので、この点は問題ないかと思います。(上記の式は文字列から直接算定していますので)

1 Like

ありがとうございます。

お陰様で無事に完成しました。
本当にありがとうございました。

1 Like

こんにちは

7:15の解釈が7時間15分とのことでしたので、以下式に訂正します。

dt.AsEnumerable.Select(Function(r) System.Text.RegularExpressions.Regex.Match(r("残業時間").ToString,"(\d+):(\d+):?(\d+)?").Groups.Cast(Of System.Text.RegularExpressions.Group).Skip(1).Select(Function(g,i) if (Int32.TryParse(g.Value,New Int32),Int32.Parse(g.Value)*CInt(Math.Pow(60,2-i)) ,0)).Sum).Sum
1 Like

ありがとうございます。
7:15が7分15秒 7時間15分 2つの解釈があるということ、とても勉強になりました。

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