|
作業日報シートのN列最終入力行は、列の合計をする数式が入っているとして
そこを処理対象から外しました。
あと工数集計表シートの各区分の表は、職場が全てA列の値と一致している
(つまりI列もQ列もA列のコピー)という前提で、A列のみから検索しています。
もう一つ、当然ですが作業日報シートのB列の値は、確実に日付型であることも
前提になります。そうでないと Month関数 がエラーになります。
Sub MyData_Total()
Dim Ary1 As Variant, Ary2 As Variant
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim C As Range
Dim MyM As Integer, i As Integer
Dim xC As Integer, xR As Integer
Dim Ad As String
Ary1 = Array(10, 30, 50, 61, 62, 63)
Ary2 = Array(0, 2, 10, 18, 2, 10, 18)
Set Sh1 = Worksheets("作業日報")
Set Sh2 = Worksheets("工数集計表")
With Application
For Each C In Sh1.Range("N5", _
Sh1.Range("N65536").End(xlUp).Offset(-1))
MyM = Month(C.Offset(, -12).Value) - 1
i = .Match(C.Offset(, -5).Value, Ary1, 0)
xC = MyM + Ary2(i)
Select Case i
Case 1 To 3: Ad = "A1:A28"
Case Else: Ad = "A31:A58"
End Select
xR = .Match(C.Offset(, -11).Value, Sh2.Range(Ad), 0)
If Ad = "A31:A58" Then xR = xR + 30
With Sh2.Cells(xR, xC)
.Value = .Value + C.Value
End With
Next
.Goto Sh2.Range("A1"), True
End With
Set Sh1 = Nothing: Set Sh2 = Nothing
MsgBox "各データを合計しました", 64
End Sub
|
|