确定日期由变量确定的日期是多少天

时间:2013-07-29 13:23:55

标签: excel vba excel-vba

我要做的是检查由变量“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

2 个答案:

答案 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