VBA マクロ 条件が一致する別シートの時間を使って開始と終了の時間算出する方法をお教えください。VBA超Sheet1のD列の頭文字(2桁)と、sheet2のA列が一致するC列(準備時間)を使って
Sheet1の開始時間と終了時間を求めたいのです。
F5の開始時間は8:35からです。
今まではマクロの記録で作った下記で算出しておりましたが、(関数"=$F5+VLOOKUP(LEFT($D5,2),Sheet2!$A:$C,3)”を使って)10:00~10:30、12:00~13:00、15:00~15:30、17:00~17:30の時間を抜くことになりました。
もうどうすればいいのか全くのお手上げです(ノД`;)
今はマクロを回した後、該当時間のセルを消して関数を入力するのを繰り返しております・・・。
これができるとすごくうれしいです。
よろしくお願いいたします。
Sub ボタン1_Click()
Range("F5").Select
ActiveCell.FormulaR1C1 = "8:35"
Range("G5").Select
Range("F6").Select
ActiveCell.FormulaR1C1 = "=R[-1]C7"
Range("F6").Select
Selection.AutoFill Destination:=Range("F6:F504")
Range("F6:F504").Select
Range("G5").Select
Selection.AutoFill Destination:="=RC6+VLOOKUP(LEFT(RC4,2),Sheet2!C1:C3,3)"
Selection.AutoFill Destination:=Range("G5:G504")
End Sub
Windows7でExcel2010を使っております。
補足です。
①Sheet2の準備時間は「分」です。
②終了時間が休憩時間に入り込んでしまった場合は休憩時間を足して終了時間を出す。
例えば開始時間が9:55で準備時間が20分の場合、その終了時間は10:45が入るようにしたいです。『開始時間からの5分+休憩時間30分+残りの準備時間15分』
次の開始時間は10:45からです。
③マクロの中で時刻を計算して値を設定するで問題ありません。
No.1ベストアンサー
- 回答日時:
補足③で良ければ、こんな感じです。
(厳密なテストはしていません。後は自己責任でお願いします)
Sub sample()
Dim i As Long
Dim StartTime As Date
Dim NextTime As Date
Dim S As Date
Dim N As Date
StartTime = "8:35"
For i = 5 To 504
NextTime = StartTime
On Error Resume Next
NextTime = NextTime + _
WorksheetFunction.VLookup(Left(Cells(i, "D"), 2), Sheets("Sheet2").Range("A:C"), 3, False)
On Error GoTo 0
S = TimeSerial(Hour(StartTime), Minute(StartTime), 0)
N = TimeSerial(Hour(NextTime), Minute(NextTime), 0)
If Not (N <= "10:00" Or S >= "10:30") Then NextTime = NextTime + "00:30"
If Not (N <= "12:00" Or S >= "13:00") Then NextTime = NextTime + "01:00"
If Not (N <= "15:00" Or S >= "15:30") Then NextTime = NextTime + "00:30"
If Not (N <= "17:00" Or S >= "17:30") Then NextTime = NextTime + "00:30"
Cells(i, "F").Value = StartTime
Cells(i, "G").Value = NextTime
StartTime = NextTime
Next i
End Sub
【機能制限】
標準時間が見つからない場合、0分と見做し、終了時間は開始時間と同値のままになります。
標準時間が2つ以上の休息時間に跨ることは考慮していません。
【気になる点】
例えば、前工程の終了時間が10:00で、次工程の標準時間が50分の場合、次工程の開始10:00、終了11:20(標準時間50分+休息30分)となりますが、開始時間は10:00で良いのでしょうかね?
それから、深夜は休息なしですか?
ありがとうございました!
希望通りの結果が得られました。
本当に助かりました。
またこちらで伺うこともあるかと思いますが、その際は是非よろしくお願いいたしますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- アルバイト・パート 初めてバイトを始めました。まだ初めてから1ヶ月程ですが、少し違和感がします。 その職場はタイムカード 1 2022/05/07 01:57
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- Excel(エクセル) 【Excel】 開始時間からある日時までの経過時間を計算する関数を教えて下さい 5 2023/06/11 22:22
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- Excel(エクセル) エクセルで休憩時間を引いての作業計画予定表の作成の仕方 2 2023/07/24 14:11
- Excel(エクセル) エクセルの関数について 5 2023/01/26 15:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
エクセル マクロ名にブック名...
-
EXCEL折れ線グラフの線を一気に...
-
エクセルマクロで、別のブック...
-
Excelのマクロでボタンを押すと...
-
EXCELのマクロが他のパソコンで...
-
EXCEL VBAで、グラフの凡例の表...
-
エクセルでマクロを確認できな...
-
エクセルでヘッダーにセルの内...
-
エクセルのマクロについて教え...
-
エクセルの表を複数枚印刷した...
-
エクセルでマクロ(Excel 4.0)...
-
エクセルの、記録を終了したマ...
-
マクロを組んだエクセルの動作...
-
Word-VBAで文字色を一括置換し...
-
Excelマクロで、稼働中のマクロ...
-
Excelのマクロ名の並び順の法則...
-
個人用マクロのショートカット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
Excelのマクロでボタンを押すと...
-
エクセルの表を複数枚印刷した...
-
エクセルの、記録を終了したマ...
-
エクセル マクロ名にブック名...
-
複数のマクロボタンをまとめて...
-
エクセルで、「いいね」のよう...
-
エクセルマクロで、別のブック...
-
エクセル ボタンに設定したマク...
-
エクセルでマクロ(Excel 4.0)...
-
別シートのマクロボタンをマク...
-
Excelマクロで、稼働中のマクロ...
-
マクロをマクロを使ってコピー...
-
(Excel VBA)シートコピー時マ...
-
エクセルで明日の日付を表示す...
-
なぜマクロの記録がなくなって...
-
エクセルでマクロを確認できな...
-
Excelのマクロ名の並び順の法則...
-
マクロ実行ボタンを自動削除したい
おすすめ情報