我需要使用VBA将Fri Jun 30 '17, 11:15:56 am
格式的日期转换为mm/dd/yyyy
格式的日期。我尝试了format()
函数,但是没有用。
答案 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天)。