如何在VBA中将类型为“ Fri Jun 30 '17,11:15:56 am”的日期格式转换为“ mm / dd / yyyy”格式

时间:2019-04-29 15:26:37

标签: excel vba datetime

我需要使用VBA将Fri Jun 30 '17, 11:15:56 am格式的日期转换为mm/dd/yyyy格式的日期。我尝试了format()函数,但是没有用。

1 个答案:

答案 0 :(得分:2)

如果format()不起作用,那么(正如您没有告诉我们的那样),我们必须假定该单元格包含该日期作为文本,而不是日期。

在这种情况下,请允许我提供许多将其转换为mm / dd / yyyy的 方法:

Format(DateValue(Replace(Mid(Split(Range("A1").Value, ", ")(0), 4, 20), "'", "")), "mm/dd/yyyy")

正如@Peh提到的那样,这不是处理日期的最佳方法。最好将日期保存为 Date -如果要写入单元格,则将该 Date 写入日期为到单元格 em>。这样可以更轻松地操作日期,您只需将格式设置应用于单元格即可获得所需的外观。


要获取日期,您可以使用:

DateValue(Replace(Mid(Split(Range("A1").Value, ", ")(0), 4, 20), "'", ""))

说明:

Split(Range("A1").Value, ", ")(0)

这将创建一个数组,该数组包含一分为二的字符串,第一部分(0)包含左元素,第二部分(1)包含右元素。

所以Fri Jun 30 '17, 11:15:56 am变成Fri Jun 30 '17

然后,我们将上方的左侧部分取下来:

Mid(<left hand part>, 4, 20)

从字符4开始,(最多)20个字符。

所以Fri Jun 30 '17变成Jun 30 '17

然后我们使用'函数删除Replace(text , "'", "")

所以Jun 30 '17变成Jun 30 17

DateValue函数将包含日期的字符串转换为实际的日期值。 Jun 30 17在Excel中可以识别为日期,并且考虑到month元素是显而易见的(即单词而不是数字),则Excel可以明确地对其进行转换。

所以Jun 30 17变成42916(-自1899年12月31日以来为42,916天)。