我开发了下面的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”列中的正确答案的图片。它们非常相似,但在某些日期不相同
旁边计算出的累积和正确答案
““计算分数时,对于8/14/80-8/31/80,它给出的是17天而不是14天”
8/14/80 - 8/31/80
的输出应仅为-17,而不是14天。只是检查一下,我尝试了您的代码,并用14替换了值-17,然后我得到的输出是7255151.33
而不是6350518.484
。