[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 休憩時間計算』(アネ)
開始時間と終了時間を手入力しボタンを押したら定時休憩時間を自動で計算するマクロのコードを教えていただきたいです。
G H I J K 2開始時間 終了時間 休憩時間 3 8:30 14:00 1:15 4 5 6 . . . . .
現在は関数を入れて自動で出るようにはなっているのですが、
作業日報ですので1日分15行、半年間の人数分(20人)を設定していたらExcelが重くなってしまったのでマクロで軽くならないかと思い質問いたしました。
定時休憩時間
10:00~10:15
12:00~13:00
15:00~15:10
17:30~17:45
上記の時間帯の休憩時間を計算していただきたいです。
よろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(名無し) 2018/09/21(金) 14:39
ゆ様
計算方法の設定で入力する時は手動で、入力終了後再計算実行ということでしょうか?
Excelを軽くしたいのですが・・・難しいでしょうか?
(アネ) 2018/09/21(金) 15:17
Dim c As Range, i As Long For Each c In Range("G3:G" & Rows.Count).SpecialCells(2) For i = c.Value * 24 * 60 To c.Offset(, 1).Value * 24 * 60 If TimeValue("10:00") < TimeValue(Format(i / (24 * 60), "hh:nn")) And TimeValue("10:15") >= TimeValue(Format(i / (24 * 60), "hh:nn")) Then ctr = ctr + 1 End If If TimeValue("15:00") < TimeValue(Format(i / (24 * 60), "hh:nn")) And TimeValue("15:10") >= TimeValue(Format(i / (24 * 60), "hh:nn")) Then ctr = ctr + 1 End If If TimeValue("12:00") < TimeValue(Format(i / (24 * 60), "hh:nn")) And TimeValue("13:00") >= TimeValue(Format(i / (24 * 60), "hh:nn")) Then ctr = ctr + 1 End If If TimeValue("17:35") < TimeValue(Format(i / (24 * 60), "hh:nn")) And TimeValue("17:45") >= TimeValue(Format(i / (24 * 60), "hh:nn")) Then ctr = ctr + 1 End If Next i c.Offset(, 4).Value = Format(ctr / (24 * 60), "h:n") Next c End Sub
(mm) 2018/09/21(金) 16:01
ありがとうございます。
試させていただきました。
セル4の休憩時間が下記のようにならないでしょうか?
G H I J K 2開始時間 終了時間 休憩時間 3 8:30 14:00 1:15 4 14:00 17:30 0:15 5 6 . . . . .
(アネ) 2018/09/21(金) 16:15
ctr = 0'★追加 For i = c.Value * 24 * 60 To c.Offset(, 1).Value * 24 * 60
(mm) 2018/09/26(水) 10:32
うまくできました。
ありがとうございました‼
(アネ) 2018/09/26(水) 13:28
G H I J K 2開始時間 終了時間 休憩時間 3 10:15 12:00 0:01 4 13:00 14:35 0:01 5 6 . . (アネ) 2018/10/09(火) 15:16
SUM(MIN(MAX(H3,"10:00"),"10:15")-MAX(MIN(G3,"10:15"),"10:00"),MIN(MAX(H3,"12:00"),"13:00")-MAX(MIN(G3,"13:00"),"12:00"),MIN(MAX(H3,"15:00"),"15:15")-MAX(MIN(G3,"15:15"),"15:00"),MIN(MAX(H3,"17:30"),"17:45")-MAX(MIN(G3,"17:45"),"17:30"))
上記が今まで使用していた関数なのですが、結果が同じになるマクロはできないでしょうか。
(アネ) 2018/10/10(水) 11:19
Dim c As Range For Each c In Range("G3:G" & Rows.Count).SpecialCells(2) c.Offset(, 4).Value = "=Sum(Min(Max(H" & c.Row & ", ""10:00""), ""10:15"") - Max(Min(G" & c.Row & ", ""10:15""), ""10:00""), Min(Max(H" & c.Row & ", ""12:00""), ""13:00"") - Max(Min(G" & c.Row & ", ""13:00""), ""12:00""), Min(Max(H" & c.Row & ", ""15:00""), ""15:15"") - Max(Min(G" & c.Row & ", ""15:15""), ""15:00""), Min(Max(H" & c.Row & ", ""17:30""), ""17:45"") - Max(Min(G" & c.Row & ", ""17:45""), ""17:30""))" c.Offset(, 4).Value = c.Offset(, 4).Value Next c End Sub (mm) 2018/10/10(水) 13:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.