如何将日期字符串转换并与Excel中的日期进行比较

Gid*_*ise 4 excel vba excel-vba

= "7/29/2011 12:58:00 PM" > NOW()
Run Code Online (Sandbox Code Playgroud)

我希望这个表达式返回FALSE但它返回TRUE.

我知道我可以将我的日期时间拆分为日期和时间,并按如下方式将它们添加到一起:

= DateValue("7/29/2011") + TimeValue("12:58:00 PM") > NOW()
Run Code Online (Sandbox Code Playgroud)

但是,这对我来说似乎不优雅.我想要一个看起来不错的简单功能或方法,我确信它在那里,但我找不到它.

我也知道有一个VBA函数被调用CDate,它可以将字符串强制转换为日期时间,这将是完美的.但是,我没有看到如何在excel单元格中调用VBA函数.

Tia*_*oso 7

将字符串乘以1,比较函数将起作用:

= 1*"7/29/2011 12:58:00 PM" > NOW()
Run Code Online (Sandbox Code Playgroud)

你的问题的答案与@ Jean-François的评论密切相关:为什么日期被Excel解释为文本而不是日期?

一旦找到它,你就可以进行比较.

如果那是因为字符串是作为文本检索的,你可以简单地将它乘以1,然后比较函数就可以了.但它仅适用于字符串格式是区域设置中的有效日期/时间格式的情况.


jon*_*sca 5

您可以将VBA调用包装在自定义函数中:

Function ReturnDate(ByVal datestr As String) As Date
    ReturnDate = CDate(datestr)
End Function
Run Code Online (Sandbox Code Playgroud)

您可以像工作表中的公式一样使用它.

  • @Gidon VBA本身不是一个长期的解决方案吗?:) (2认同)