プロが教えるわが家の防犯対策術!

エクセルマクロについて質問があります。
お力を貸して下さい。

シート名 休憩休日表
A列に休憩開始日 10:00:00 AM
B列に休憩終了日 10:10:00 AM
C列に休日開始日 2017/1/21
D列に休日開始時間 8:30:00 AM
E列に休日終了日 2017/1/22
F列に休日終了時間 8:30:00 AM

シート名 生産計画
O列に半成品残時間 26.0h
T列に半成品開始日 1/17 8:30
V列に半成品完了日 答えを求めたいです

X列に完成品残時間 26.0h
AC列に完成品開始日 1/17 8:30
AE列に完成品完了日 答えを求めたいです

休憩休日を省いた時間を求めたいのですが
下記内容を少し変更したいのですが
お力を貸して頂けたら助かります。

Function 終了日時(開始日時 As Variant, 経過時間 As Variant, 休憩 As Range, 休日 As Range) As Variant
Dim D As Variant
Dim K As Long
Dim KS As Variant
Dim KE As Variant
Dim 休開始 As Variant
Dim 休終了 As Variant
終了日時 = 開始日時 + 経過時間 / 24
休開始 = 開始日時
休終了 = 開始日時
Do
If Not (終了日時 <= 休開始 Or 休終了 <= 開始日時) Then
終了日時 = 終了日時 + 休終了 - 休開始
End If
Call 次の休憩を求める(休開始, 休終了, 休憩, 休日)
Loop Until 終了日時 <= 休開始
End Function

Sub 次の休憩を求める(休開始 As Variant, 休終了 As Variant, 休憩 As Range, 休日 As Range)
Dim KS As Variant
Dim KE As Variant
Dim HS As Variant
Dim HE As Variant
Dim D As Variant
Dim K As Long
'次の休憩を求める
D = DateValue(Format(休終了, "yyyy年mm月dd日"))
Do
For K = 1 To 休憩.Rows.Count
KS = D + 休憩(K, 1)
KE = D + 休憩(K, 2)
If KS > 休終了 Then Exit For
Next K
D = D + 1
Loop Until KS > 休終了
'次の休日を求める
For K = 1 To 休日.Rows.Count
HS = 休日(K, 1)
HE = 休日(K, 2)
If HS > 休終了 Then Exit For
Next K
'休日と休憩の判定
If K >= 休日.Rows.Count Or KS < HS Then
休開始 = KS
休終了 = KE
Else
休開始 = HS
休終了 = HE
End If

A 回答 (2件)

このままでは、回答はつかないと思いますので、いくつか補足要求します。


(私が回答できる保証はありませんが)
1)質問1
>V列に半成品完了日 答えを求めたいです
>AE列に完成品完了日 答えを求めたいです
これを求める、具体的な例を書いてください。

2)質問2
このシートは1行目に見出しがあり、2行目以降にデータがあるのでしょうか。
10行目のV列に半成品完了日を求める場合は、他の列の10行目のデータを使用すればよいのですか。

3)質問3
Function 終了日時()を呼び出している箇所の具体的な記述をお願いします。
V列(例V2)に
=終了日時(・・・・)と書いていると思われますが、・・・・箇所の具体的な記述をお願いします。
AE列(例AE2)も同様にお願いします。

4)質問4
Function 終了日時()の機能を日本語で書いてください。

5)質問5
Sub 次の休憩を求める()機能を日本語で書いてください。
    • good
    • 0

補足要求の追加です。


質問6)
>V列に半成品完了日 答えを求めたいです
>AE列に完成品完了日 答えを求めたいです

あなたが提示された
A列に休憩開始日 10:00:00 AM
B列に休憩終了日 10:10:00 AM
C列に休日開始日 2017/1/21 
等の数値の場合にどうなるか上記の期待する結果を提示ください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!