Функция now () в листе sum.if дает странные результаты - PullRequest
0 голосов
/ 05 мая 2019

У меня есть некоторый код, который использует функцию SumIf на листе, выбрав несколько дат. Когда я использую функцию date Now (), я получаю странные результаты.

Хитрость, которую я хочу сделать, - это вычислить промежуточные суммы в сомах в зависимости от периода между now () и некоторой другой датой. Однако, когда я использую Now (), я получаю странные промежуточные итоги. В то время как при использовании I Date в далеком будущем (например, «01-01-2900») я получаю правильные результаты

этот код дает странные результаты

With Worksheets(1).Range("B:B")
    Set c = .Find("STG PENSIOENFONDS ABP", LookIn:=xlValues, Searchorder:=xlByColumns)
    If Not c Is Nothing Then
        firstaddress = c.Address
       **arg2 = Now()**
        Do
            arg1 = CDbl(c.Offset(0, -1).Value)
            If Month(arg1) + 1 = 13 Then
                'MsgBox (Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1) + 1)
                c.Offset(0, 6).Value = CDate(Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1) + 1)
            Else
                c.Offset(0, 6).Value = CDate(Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1))
            End If

            som1 = WorksheetFunction.SumIf(Range("A:A"), ">=" & CDbl(c.Offset(0, -1).Value), Range("G:G"))
            som2 = WorksheetFunction.SumIf(Range("A:A"), ">=" & arg2, Range("G:G"))
            som3 = som1 - som2
            c.Offset(0, 7) = som3
            arg2 = CDbl(c.Offset(0, -1).Value)
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If

Это работает правильно

With Worksheets(1).Range("B:B")
    Set c = .Find("STG PENSIOENFONDS ABP", LookIn:=xlValues, Searchorder:=xlByColumns)
    If Not c Is Nothing Then
        firstaddress = c.Address
      **arg2 = "01-01-2919"**
        Do
            arg1 = CDbl(c.Offset(0, -1).Value)
            If Month(arg1) + 1 = 13 Then
                'MsgBox (Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1) + 1)
                c.Offset(0, 6).Value = CDate(Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1) + 1)
            Else
                c.Offset(0, 6).Value = CDate(Day(arg1) & "-" & Replace(Month(arg1) + 1, "13", "1") & "-" & Year(arg1))
            End If

            som1 = WorksheetFunction.SumIf(Range("A:A"), ">=" & CDbl(c.Offset(0, -1).Value), Range("G:G"))
            som2 = WorksheetFunction.SumIf(Range("A:A"), ">=" & arg2, Range("G:G"))
            som3 = som1 - som2
            c.Offset(0, 7) = som3
            arg2 = CDbl(c.Offset(0, -1).Value)
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If

Когда я использую Now (), подытог - это цифра, которую я не понимаю, когда я использую "01-01-2900", я получаю ожидаемый подытог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...