0

我要做的是检查由变量“Año”确定的一年中发生的每个日期的 AJ 列。对于那些日期,我想看看它们在一年中有多远(即每个日期在第一个一月之后多少天);这是给我错误的部分(在我的代码中显示)。我需要的是一个函数来给出一个日期在一年中的多少天,或者一个更好的方式来编写那行代码。

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

下一个分类

4

2 回答 2

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
于 2013-07-29T13:38:31.477 回答
0

日期存储为自 1900 年 1 月 1 日以来的天数,因此您只需减去两个日期即可获得天数。

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
于 2013-07-29T15:56:29.520 回答