我开发的VBA代码有问题

问题描述 投票:0回答:2

我开发了下面的vba代码,通过在“ I”列中添加与小于“ K”列中日期的日期相对应的数量,来计算“ K”列中直到一个日期为止的累积生产量

    Option Explicit
    Sub Gp()
    Dim date2 As Double            'Same p/z production Dates'
    Dim Gp As Double               'Cumulative production volumes"
    Dim fraction As Double
    Dim Daysmonth As Double
    Dim Days As Double
    Dim i As Integer, j As Integer

        Gp = 0
        j = 3
        For i = 4 To 43
              date2 = Cells(i, "K")
              Do While (Cells(j, "A") < date2)
                  Gp = Gp + Cells(j, "I")
                  j = j + 1
               Loop
               Daysmonth = Cells(j, "A") - Cells(j - 1, "A")
               Days = date2 - Cells(j - 1, "A")
               fraction = Cells(j, "I") * Days / Daysmonth
               Gp = Gp + fraction
               Cells(i, "M") = Gp
               Gp = (Gp + Cells(j, "I")) - fraction
               j = j + 1
        Next i
End Sub

此代码采用“ K”列的第一个单元格,并在“ A”列中查找所有小于日期的日期。然后,将“ I”列中所有这些日期的金额相加。然后,如果“ A”列中的日期与“ K”列中的日期处于同一月份和年份,则它将计算与这些天相对应的金额的分数。在计算分数时,一切正常,直到8/14/80为止,而对于8/14/80-8/31/80,分数给出的是-17,而不是14天。它给了我6304593,应该给了我6350518.484。

这是我在“ M”列中的答案和在“ N”列中的正确答案的图片。它们非常相似,但在某些日期不相同

旁边计算出的累积和正确答案

enter image description here

excel vba
2个回答
0
投票

““计算分数时,对于8/14/80-8/31/80,它给出的是17天而不是14天”


0
投票

8/14/80 - 8/31/80的输出应仅为-17,而不是14天。只是检查一下,我尝试了您的代码,并用14替换了值-17,然后我得到的输出是7255151.33而不是6350518.484

© www.soinside.com 2019 - 2024. All rights reserved.