我要做的是检查由变量“Año”确定的一年中发生的每个日期的AJ列。对于那些日期,我想看看它们到底有多远(也就是每个日期的第一个1月之后多少天);这是给我错误的部分(在我的代码中指出)。我需要的是一个函数来给出一年中有多少天发生日期或者更好的方式来编写这行代码。
For Each cl In Workbooks(WbkA).Worksheets("Sheet1").Range("AJ2:AJ1000")
If (cl.Value - ("01/01/" & Año)) > 0 And (cl.Value - ("01/01/" & Año)) < 366 Then 'if it´s in this year
ValueA = ValueA + (cl.Value * ((cl.Offset(0, -13).Value - ("01/01/" & Año)) / 365)) ' this part is giving me the error
End If
End If
下一个cl
答案 0 :(得分:0)
你太复杂了。 DateDiff
可以执行您想要的计算:
Dim iniDate As Date, curDate As Date
Dim ValueA As Integer, Año As Integer
Año = 2010
iniDate = Format(CDate("01/01/" & Año), "MM/dd/yyyy") 'You can change the Format
curDate = Format(CDate("01/05/" & Año), "MM/dd/yyyy")
ValueA = DateDiff("d", iniDate, curDate) 'RESULT -> 4
答案 1 :(得分:0)
日期存储为自19/1/19以来的天数,因此您只需减去两个日期即可获得天数。
Dim lAno As Long
Dim rCell As Range
Dim dValueA As Double
lAno = 2010
For Each rCell In Sheet1.Range("AJ2:AJ100").Cells
If Year(rCell.Value) = lAno Then 'if it's in the year
'+= some value * the number of days
dValueA = dValueA + (rCell.Offset(0, -13).Value * (rCell.Value - DateSerial(lAno, 1, 1)))
End If
Next rCell