Как сравнить две даты, посчитать и начать заново? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть еженедельный отчет, из которого я получаю по запросу, сколько часов было сообщено в определенный день, а также за целую неделю.Допустим, вы указали 9 часов в каждый рабочий день недели и 45 в целом за неделю, поэтому я получаю столбец C на листе 1 с датой дня, скажем 25/03/2019, а в столбце D - часы этого дня.это будет 9, а в столбце F общее количество дней недели, то есть 45.

В Sheet2 я получаю все даты дней этой недели, поэтому у меня будет 5 строк с информацией.Столбец F из Sheet1 вызывает все эти значения и добавляет их.У меня проблема, когда я пытаюсь получить два дня из одной недели, хотя Sheet2 работает правильно и дает мне два набора данных, и столбец D из Sheet1 тоже, столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...