Timespan型で24時間を超える足し算(列①+列②)

UiPath初心者です。
先程、timespan型で24時間を超える足し算(列の合計)をこちらで教えて頂いたのですが、
列①+列②のような、列同士の足し算も必要になりました。
こちらも以下の様な式で行うとエラーとなります。
以下の様な表で、合計欄へ行ごとの合計を算出したいです。

どの様にしたら良いか教えて頂きたくよろしくお願いいたします。
image

timespan.Parse(row(“カラム名①”).ToString)+timespan.Parse(row(“カラム名②”).ToString)

こんにちは

基本的にTimeSpan型は24時間を超えれないので、
それを回避した方法で、何らかの型で取り込み、加算したのちに、目的のフォーマットに整形する必要があるかと思います。

先ほど使った式の中身(長いのでImportパネルでSystem.Text.RegularExpressionsを追加いただくと以下の様に短くできます)を使うと各値の秒が得られますので、これと加算したい値を同様にすると
加算秒数が得られます。

Regex.Match(r("残業時間").ToString,"(\d+)*:?(\d+):(\d+)", RegexOptions.RightToLeft).Groups.Cast(Of 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

あとは先ほどの式

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

で所定の様式に整形すれば良いかと思います。

ところで先ほどから気になっている7:15は7分15秒の意図であっていますか?
もしこれが7時間15分の意図でしたら、先ほどの分も含めて見直しが必要です。

おはようございます。
いつもありがとうございます。

7:15=7時間15分でした。

一度指摘して頂いていたにも関わらず、私が分かっておらず、申し訳ございません。

こんにちは

7:15=7時間15分でした。

そうなのですね。秒の部分の有無について書式の揺れがあるのはなぜなんでしょうね...
それはさておき、そのような仕様であれば例えばForEachRowの中ですと以下の式で
秒数として取得できます。

Regex.Match(row("残業時間").ToString,"(\d+):(\d+):?(\d+)?").Groups.Cast(Of 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

加算が必要なら、列名のことなる上記式の結果を足し算して、

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

で必要な書式に変換すれば良いかと思います。

1 Like

いつも本当にありがとうございます。

そうなんです。
秒の部分の書式違い、少し不思議です。
24時間を超えるとなぜか秒まで出ています。

Rowでの式、ありがとうございます。
式がとても難しく、解読出来なかったのですが、
列:残業時間だけではなく、早出時間、法定休日、法定外休日など各個人ごとに合計を算出したいのですが、この式で行全てを足せるという解釈であっていますでしょうか。

いつも私の説明と理解が悪く、申し訳ございません。