计算截止日期和距离设定截止日期还剩多少天
Posted
技术标签:
【中文标题】计算截止日期和距离设定截止日期还剩多少天【英文标题】:Counting due date and days left until a set deadline 【发布时间】:2018-02-01 08:41:41 【问题描述】:我正在尝试制作一个宏,该宏将用户输入的截止日期输入单元格E2
,然后检查与今天的日期相比,截止日期是否已过。此外,我试图在单元格F2
中显示计数,显示距离截止日期还有多少天,或者超过截止日期多少天。我有以下代码,但它没有正确计算天数,我不确定截止日期检查是否正常:
Sub Test()
Dim DDate As Date
Dim Ndate As String
Dim DDays As String
Dim NDays As String
Dim LDays As String
Ndate = Format(Date, "yyyymmdd") 'current date
DDate = Range("E2") 'due date, as entered in the cell by user, 20180101 in this example)
If DDate < Ndate Then Range("G1") = "ERROR" 'calculate whether the due date (DDate) has passed, and do something if yes)
NDays = Format(Date, "dd")
DDays = Range("E2").Value.Format(Date, "dd")
LDays = NDays - DDays 'count how many days are left until the due date (or how many days it's over the due date)
Range("F2") = LDays 'put the number of days in cell F2
End Sub
【问题讨论】:
为什么需要 VBA? Excel 的本机电子表格功能可以完成这项工作。在 F2 中,输入 =E2-TODAY()。 【参考方案1】:我认为您不需要 VBA。请记住,Excel 将日期存储为自 00/01/1900 以来过期的天数。
因此,例如,如果您想知道E2
中的日期是在A1
中的截止日期之前还是之后,您可以简单地直接比较=IF(E2<=A1,"Deadline not passed","Deadline passed")
。
截止日期之前或之后的天数只是差值:E2-A1
。
编辑:我只是注意到您想与今天的日期进行比较。正如 Chris 的评论所暗示的,您可以使用 =TODAY()
来获取此信息。
【讨论】:
是的,我对VLOOKUP
以外的公式不太熟悉,所以我尝试在vba中解决所有问题。你们建议的确实是更好的方法。【参考方案2】:
如果你想走VBA路线,我已经修改了代码:
Sub Test()
Dim DDate As Date
' Change the date value 20180101 entered in to excel date format, as yyyy/mm/dd
Range("E2").TextToColumns Destination:=Range("E2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 5), TrailingMinusNumbers:=True
DDate = Range("E2").Value
If DDate < Date Then 'calculate whether the due date (DDate) has passed, and do something if yes)
Range("G1") = "ERROR"
Else
Range("F2").Value = DDate - Date
End If
End Sub
【讨论】:
以上是关于计算截止日期和距离设定截止日期还剩多少天的主要内容,如果未能解决你的问题,请参考以下文章