如何比较两个日期,计数并重新开始?

时间:2019-06-13 15:36:36

标签: excel vba

我有一个每周报告,可以通过查询查询在特定日期以及整个星期报告了多少小时。假设您在一周的每个工作日报告了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

0 个答案:

没有答案