[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで時間を累積する方法』(お茶)
01:00
00:45
02:00
これを時刻ではなく時間として累積していくコードはどのように記載したらよいか教えて頂けますでしょうか。
(03:45 3時間45分としたいです。)
< 使用 Excel:Excel2013、使用 OS:Windows10 >
(お茶) 2019/12/11(水) 11:48
時間データを&でつなげているということはないだろうか? もしそうであれば+で足し合わせてくれ、 (ねむねむ) 2019/12/11(水) 12:05
'集計対象セル範囲を選択して実行 Dim c As Range, h As Long, m As Long For Each c In Selection If UBound(Split(c.Text, ":")) = 1 Then h = h + Val(Split(c.Text, ":")(0)) m = m + Val(Split(c.Text, ":")(1)) End If Next c h = h + Int(m / 60) m = m - Int(m / 60) * 60 MsgBox h & "時間" & m & "分" End Sub (mm) 2019/12/11(水) 12:38
Q列にK列の時間を日毎に累積していきたいのですが、うまくいきません。
自分で書いたコードを記載しますので、おかしなところがありましたら教えていただけますでしょうか。
'G列勤務開始よりH列勤務終了が大きい場合(例9:00〜17:45) If TimeValue(Time02) > TimeValue(Time01) Then '【残業時間】を累積 その時点での合計残業時間 + H列勤務終了 - G列勤務開始 - I列外出 -1時間お昼休憩 - 定時の7:45を引く(=残業のトータルなので!) Total_Time_int = Total_Time_int + TimeValue(Time02) - TimeValue(Time01) - TimeValue(Time07) _ - TimeValue("1:00:00") - TimeValue("7:45:00") '累積が0だった時 If Format(Total_Time_int, "hh:mm") = "00:00" Then .Range(メモ2 & Cnt05) = "'00:00" '累積が0じゃないときは何もしない Else '累積が0より下のとき(=マイナスになっちゃうとき) If Total_Time_int < 0 Then '-マイナスを付けてあげてプラスにする .Range(メモ2 & Cnt05) = "'-" & Format(Total_Time_int, "hh:mm") '累積が0より上のとき Else '"hh:mm"形式の文字列にする .Range(メモ2 & Cnt05) = "'" & Format(Total_Time_int, "hh:mm") End If End If '日マタギの判定 跨いでる場合 Else '【残業時間】を累積 その時点での合計残業時間 + H列勤務終了 + 【※23:59:00を追加】 - G列勤務開始 - I列外出 - 1時間お昼休憩 - 定時の7:45を引く(=残業のトータルなので!) '※真夜中を0:00ではなく24:00・・25:00・・26:00のようにするが、システム上24:00:00を足せないので一旦23:59:00を足す Total_Time_int = Total_Time_int + TimeValue(Time02) + TimeValue("23:59:00") _ - TimeValue(Time01) - TimeValue(Time07) - TimeValue("1:00:00") - TimeValue("7:45:00") '+1分を別で足す Total_Time_int = Total_Time_int + TimeValue("00:01:00") '累積が0だった時 If Format(Total_Time_int, "hh:mm") = "00:00" Then .Range(メモ2 & Cnt05) = "'00:00" '累積が0じゃないときは何もしない Else '累積が0より下のとき(=マイナスになっちゃうとき) If Total_Time_int < 0 Then '-マイナスを付けてあげてプラスにする .Range(メモ2 & Cnt05) = "'-" & Format(Total_Time_int, "hh:mm") '累積が0より上のとき Else '"hh:mm"形式の文字列にする .Range(メモ2 & Cnt05) = "'" & Format(Total_Time_int, "hh:mm") End If End If End If
(お茶) 2019/12/11(水) 15:45
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.