我有一个表(“每月小时数”),其中包含有关不同客户的不同机器的若干信息,每月要完成的机器小时数,我希望在第二个表(“投影”)中得出客户的特定小时数和给定时间段(该时间段在单元格C1和E1中的“投影”中定义),按机器类型,然后按类别。
从中提取数据的第一个表“每月小时数”
将数据复制到的第二个表“投影”
我想在VBA中进行这些计算,因为这些表可能会定期更新,并且在excel中使用公式并不实际。
但是,我不是VBA专家,但我意识到我可能正在使用一种过时的方法。
我使用sumifs来计算所需的总和,但是我意识到了两个问题:
与我的sumif相关的代码行在下面的代码中为红色
预先感谢您的帮助
Sub test()
'
' test Macro
'
'
Dim i, j, mons, monsend, years, yearend, colstart, colend, nbrcolsumif, yeartest As Integer
Dim condition As Range
Dim startdate, enddate As Date
col = 14
colstart = 14
colend = 14
startdate = Sheets("Projection").Cells(1, 3) ' date de début de la periode voulue
enddate = Sheets("Projection").Cells(1, 5) ' date de fin de la periode voulue
mons = Month(startdate)
years = year(startdate)
monsend = Month(enddate)
yearend = year(enddate)
Sheets("Monthly Hours").Activate
Do While (years <> year(Sheets("Monthly Hours").Cells(4, colstart).value) Or mons <> Month(Sheets("Monthly Hours").Cells(4, colstart).value))
colstart = colstart + 1
Loop
While (yearend <> year(Sheets("Monthly Hours").Cells(4, colend).value) Or monsend <> Month(Sheets("Monthly Hours").Cells(4, colend).value))
colend = colend + 1
Wend
i = 3
j = 2
While Not IsEmpty(Sheets("Projection").Cells(2, j))
While Not IsEmpty(Sheets("Projection").Cells(i, 1))
nbrcolsumif = colend - colstart
Sheets("Projection").Cells(i, j).value = Application.WorksheetFunction.SumIfs(Sheets("Monthly Hours").Range(Cells(5, colstart), Cells(1048576, colend)), Sheets("Monthly Hours").Range(Cells(5, 4), Cells(1048576, 4 + nbrcolsumif)), Sheets("Projection").Cells(i, 1), Sheets("Monthly Hours").Range(Cells(5, 1), Cells(1048576, 1 + nbrcolsumif)), Sheets("Projection").Cells(2, j))
i = i + 1
Wend
j = j + 1
i = 3
Wend
End Sub