VBA 从另一列中的日期减去今天的日期和 return 一个数字
VBA To subtract today's date from a date in another column and return a number
希望对你有所帮助。我在下面有一小段代码。我遇到的问题是,我试图从 C 列中的日期减去今天的日期(参见图 1),然后 return D 列中的数值结果,然后沿着 D 列继续此公式,直到没有C 列中要减去的值。
所以今天的日期是 09/03/2017 我想从 C2 03/07/2017 中的日期减去这个日期,在 D2 中给我 2 然后继续通过 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
DateDiff
函数参数:
- Interval 在你的情况下 "d"(代表天数)是第一个参数,而不是第三个参数。
您不能在 DateDiff
函数中使用 C2
,但您需要使用 Range("C2").Value
.
从该单元格中获取值
此外,DateDiff
将在几天内 return 一个数字结果,因此您需要在 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
而不是
Range("D2").Formula = DateDiff(C2, Date, "d")
使用
Range("D2").Formula = "=DAYS(TODAY(),C7)"
.Formula
必须是一个公式,因为您将其写入单元格(英文 Excel 版本)。如果您有非英语(本地化)Excel 版本,那么您可以使用 .FormulaLocal
以您的本地化语言编写公式。
希望对你有所帮助。我在下面有一小段代码。我遇到的问题是,我试图从 C 列中的日期减去今天的日期(参见图 1),然后 return D 列中的数值结果,然后沿着 D 列继续此公式,直到没有C 列中要减去的值。
所以今天的日期是 09/03/2017 我想从 C2 03/07/2017 中的日期减去这个日期,在 D2 中给我 2 然后继续通过 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
DateDiff
函数参数:
- Interval 在你的情况下 "d"(代表天数)是第一个参数,而不是第三个参数。
您不能在 DateDiff
函数中使用 C2
,但您需要使用 Range("C2").Value
.
此外,DateDiff
将在几天内 return 一个数字结果,因此您需要在 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
而不是
Range("D2").Formula = DateDiff(C2, Date, "d")
使用
Range("D2").Formula = "=DAYS(TODAY(),C7)"
.Formula
必须是一个公式,因为您将其写入单元格(英文 Excel 版本)。如果您有非英语(本地化)Excel 版本,那么您可以使用 .FormulaLocal
以您的本地化语言编写公式。