Excel VBA - 将日期字符串转换为日期

30 浏览
0 Comments

Excel VBA - 将日期字符串转换为日期

我有一些字符串,它们是日期,但需要转换为日期格式。

它们的格式如下:

mmm dd, yyyy

例如:

Feb 10, 2016

它们可能是11或12个字符长:

Feb 1, 2016

我已经开始编写一个函数,逐个解析字符串的每个部分(日期、月份和年份),然后转换为日期格式。

首先,是否有比上述方法更简单/更巧妙的方法?

如果没有更简单的方法,将3个字母的月份(例如Feb或Mar或Apr)转换为月份数字(例如2或3或4)的最佳方法是什么?因为这是我真正困惑的部分。

0
0 Comments

Excel VBA中,当我们需要将一个字符串转换为日期时,可能会遇到一些问题。下面是一个出现这个问题的例子和解决方法。

问题:如何将一个日期字符串转换为日期类型?

解决方法:使用一个Date变量来读取值,然后使用Format函数来格式化日期。

下面是一个示例代码:

Sub test()
    Dim D As Date
    D = Range("A1").Value
    MsgBox Format(D, "mm/dd/yyyy")
End Sub

如果在单元格A1中输入字符串"Feb 10, 2016"并运行上述代码,那么消息框中将显示"02/10/2016"。

通过使用Date变量和Format函数,我们可以将日期字符串转换为所需的日期格式。这对于在Excel VBA中处理日期数据非常有用。

0
0 Comments

原因:VBA中不能直接从工作表中调用函数,而是需要将函数包装在用户定义函数(UDF)中才能进行调用。

解决方法:将函数包装在UDF中,然后从工作表中调用该函数。

在VBA中,如果要将日期字符串转换为日期格式,可以使用cdate("Feb 10, 2016")函数。如果将其作为一个函数来使用,代码如下所示:

Public Function ConvertToDate(rng As Range) As Date
    ConvertToDate = CDate(rng)
End Function

为什么不能直接使用CDate(rng)呢?因为在工作表中无法直接调用VBA函数,必须将函数包装在用户定义函数(UDF)中才能进行调用。

如果不明白我的意思,或者我漏掉了什么?作为一个UDF,我不确定是否能进一步简化它。

Cook:我没有考虑从工作表中调用该函数,所以我认为不需要使用UDF。

通过将函数包装在UDF中,我们可以在工作表中直接调用该函数,以便将日期字符串转换为日期格式。这样,我们就可以轻松地在Excel中进行日期格式的转换了。

0
0 Comments

问题的原因是:在Excel VBA中,将字符串转换为日期时,有时会出现错误的结果。在上述示例中,将字符串"Feb 10, 2016"转换为日期时,返回的结果是2,而不是10。

解决方法是:使用VBA中的CDate函数来转换日期字符串。CDate函数可以将字符串转换为日期,并返回正确的日期值。修改上述示例中的代码如下:

Sub test()
    MsgBox Month(CDate("Feb 10, 2016"))
End Sub

这样修改后,将字符串"Feb 10, 2016"转换为日期时,返回的结果将是10,而不是错误的2。

通过使用CDate函数,我们可以在Excel VBA中正确地将日期字符串转换为日期,避免出现错误的结果。这对于需要处理日期数据的VBA程序非常重要。

0