我有一个每周报告,可以通过查询查询在特定日期以及整个星期报告了多少小时。假设您在一周的每个工作日报告了9个小时,一周中总共报告了45个小时,那么我在Sheet1中获得了C列,其中包含日期(例如25/03/2019),在D列中获得了从该天起的小时数它将是9,在F列中是整个星期,所以它将是45。
在Sheet2中,我获得了该星期几的所有日期,因此我将获得5行信息。 Sheet1中的F列调用所有这些值并将其相加。 我遇到的问题是,当我尝试从同一周获得两天时,尽管Sheet2可以正常工作并提供了两组数据,并且Sheet1的D列也可以,F列而不是每个箭头的45列得到了90倍,因为算是两周相等。
有没有一种方法可以重置计数或只获得一周一次?
Function WeekHours() As Double
Dim addHours As Double
Dim lRow As Integer
Dim weeks() As Integer
lRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
ReDim weeks(1 To lRow - 1)
For i = 2 To lRow
weeks(i - 1) = WorksheetFunction.WeekNum(Sheet1.Cells(i, "C"), vbMonday)
'MsgBox lRow
Next i
lRow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To sizeOf(weeks)
addHours= 0
For j = 2 To lRow
If WorksheetFunction.WeekNum(Worksheets("Sheet2").Cells(j, "B"), vbMonday) = weeks(i) Then
addHours= addHours+ Worksheets("Sheet2").Cells(j, "C").Value
Sheet1.Cells(i + 1, "F") = addHours
End If
Next j
addHours= 0
Next i
WeekHours = addHours
End Function