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").Value
inputRange("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
以您的本地化语言编写公式。