こんにちは
図の左側のデータの有るシートのシートタブを右クリックして「コードの表示」
を選択して表示されたVBE画面に
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tSh As Worksheet
Dim r As Range
Dim v As Variant
Dim s As Variant
Dim t As Variant
'上から順に入力されるとして
If Intersect(Target, Range("A1").CurrentRegion) Is Nothing Then Exit Sub
'部屋の入力の有無
If WorksheetFunction.CountA(Target.EntireRow.Range("D1:F1")) = 0 Then Exit Sub
'時間の入力の有無
If WorksheetFunction.CountA(Target.EntireRow.Range("B1:C1")) = 0 Then Exit Sub
'IDの入力の有無
If Target.EntireRow.Range("A1") = "" Then Exit Sub
Set tSh = Worksheets("Sheet2")
If Target.Column >= 4 Then
v = Application.Match("部屋" & Target, tSh.Rows(1), 0)
If IsError(v) Then MsgBox "該当の部屋が有りません", vbExclamation: Exit Sub
s = Application.Match(Target.EntireRow.Range("B1"), tSh.Columns(1), 0)
If IsError(s) Then MsgBox "該当の開始時間が有りません", vbExclamation: Exit Sub
t = Application.Match(Target.EntireRow.Range("C1"), tSh.Columns(1), 0)
If IsError(t) Then
If Target.EntireRow.Range("C1") = "" Then
t = s
Else
MsgBox "該当の終了時間が有りません", vbExclamation: Exit Sub
End If
End If
With tSh
.Range(.Cells(s, v), .Cells(t, v)).Value = Target.EntireRow.Range("A1")
End With
End If
End Sub
をコピーし貼り付けて、
Set tSh = Worksheets("Sheet2")
のシート名を図の右側のデータが有るシートの名前に変更してから
データを入力してみて下さい。
時間の端数の部分の事が良く分からないですが、適当に修正して下さい。
1は10時、2は10時0分10秒???
時間では無くて整数で入力してあるという事で、途中の時刻とは10秒未満の時間
の事ですか?
お礼
ありがとうございます! 思っていた計算ができました。 ところで、 SUMPRODUCTの中で、 (Sheet1!$D$2:$F$4=RIGHT(B$1,1)) を繰り返す(2乗する?)理由はなぜでしょうか? もし可能でしたらご教示ください。