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

我希望你能帮上忙。 下面有一小段代码。 我遇到的问题是我想从C列的date(见图1)中减去今天的date,然后在D列中返回一个数字结果,然后在D列下面继续这个公式,直到列中没有值C减去。

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

这段代码中的错误是Range("D2").Formula = DateDiff(C2, Date, "d")

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

它所属的代码的大部分是

 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

在这里输入图像说明

DateDiff函数参数:

  • 在你的情况“d”(represnting days)的时间间隔是第一个参数,而不是第三个参数。

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

另外, DateDiff会在几天内返回一个Numeric结果,所以你需要在Range("D2").ValueinputRange("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 

代替

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

使用

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

.Formula当你写入一个单元格(英文Excel版本)时,配方必须是一个公式。 如果您有非英文(本地化)的Excel版本,那么您可以使用.FormulaLocal以您的本地化语言编写公式。