VBA从另一列中的日期减去今天的日期并返回一个数字

时间:2017-03-09 09:45:50

标签: excel vba excel-vba date subtraction

我希望你能提供帮助。我在下面有一小段代码。我遇到的问题是我试图从C列中的日期减去今天的日期(参见图1),然后在D列中返回一个数值结果,然后将该公式继续到D列,直到列中没有剩余值C减去。

所以今天的日期是09/03/2017我想从C2 03/07/2017的日期中减去这个日期,给我2个D2,然后通过D列继续,直到C有一个空格。

窃听的代码是Range("D2").Formula = DateDiff(C2, Date, "d")

我得到的错误是运行时错误13类型不匹配。

它所属的大部分代码是

Public Sub Activate_Sheet()



Worksheets("In Progress").Activate
Columns.AutoFit
Range("N:N").EntireColumn.Delete
Range("D1").Value = "# days open"
Range("D2").Formula = DateDiff(C2, Date, "d")

End Sub

一如既往,我们非常感谢所有人的帮助。

图1

enter image description here

2 个答案:

答案 0 :(得分:1)

DateDiff函数参数:

  • Interval 在你的情况下“d”(重复上述日期),是第一个参数,而不是第三个参数。

您无法在C2函数中使用DateDiff,但您需要使用Range("C2").Value从该单元格中获取值。

此外,DateDiff会在几天内返回数字结果,因此您需要在Range("D2").Value而不是Formula中输入。

将您的代码修改为:

Range("D2").Value = DateDiff("d", Range("C2").Value , Date)

编辑1 :为C列中的所有已占用单元格运行此代码:

Dim LastRow  As Long, i As Long
With Worksheets("In Progress")
    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row

    For i = 2 To LastRow
        .Range("D" & i).Value = DateDiff("d", .Range("C" & i).Value, Date)
    Next i
End With

答案 1 :(得分:1)

而不是

Range("D2").Formula = DateDiff(C2, Date, "d")

使用

Range("D2").Formula = "=DAYS(TODAY(),C7)"

.Formula写入单元格时,

.FormulaLocal必须是公式(对于英文Excel版本)。如果您有非英语(本地化)Excel版本,则可以使用{{1}}以本地化语言编写公式。