我有一列将日期存储为dd/mm/yyyy
。然后,我要求用户以表格形式输入新日期(始终为dd / mm / yyyy)。我想将输入日期与excel中的最后一个日期进行比较。
If Format(data_mov, "Short Date") < Format(data_last, "Short Date") Then
绝不可行,因为它将比较两个字符串,并且测试将失败,因为03/10/2018看起来小于23/09/2018。
测试它们的正确方法是什么?像将它们转换成时间戳然后进行比较(但是在excel中是否有unixtimestamp之类的东西?)
答案 0 :(得分:2)
您将字符串转换为日期并进行比较:
' dd/mm/yyyy
' 1234567890
Dim Date1: Date1 = DateSerial(Mid(data_mov, 7, 4), Mid(data_mov, 4, 2), Mid(data_mov, 1, 2))
Dim Date2: Date2 = DateSerial(Mid(data_last, 7, 4), Mid(data_last, 4, 2), Mid(data_last, 1, 2))
If Date1 < Date2 Then
' ...
End If
答案 1 :(得分:0)
“测试它们的正确方法是什么?”
恕我直言,有不止一种方法。
if()
和value()
将很简单。
if()
和year()
,month()
,day()
,hour()
...
“有点像将它们转换为时间戳然后进行比较(但 在Excel中是否有类似unixtimestamp的东西?)”
(对我而言)最简单的方法是使用value()
函数。然后在其上构建所需的if()
语句。
希望有帮助。 (:
Microsoft Excel for Windows默认情况下使用1900日期系统。这意味着第一个日期是1900年1月1日。Date和Time函数可用于操作年份/日期和时间/小时/分钟值。 Excel中的日期/时间存储为数字。小数部分范围从0.0到0.99988426代表0:00:00(12:00:00 AM)到23:59:59(11:59:59 PM),整数部分范围从0到9999代表1900年到9999年。