格式为“YYYY MMM DD 00:00:00.000”的Excel日期需要日期为DD-MMM-YYYY

时间:2009-06-17 19:42:34

标签: excel-vba vba excel

有没有办法编程宏来将工作表中的所有日期转换为“2009 APR 01 00:00:00.000”到日期格式“dd-mmm-yyyy”?我有一个定期提取的数据集,40多列中的所有日期在2009年APR 01 00:00:00.000中基本没用,有关如何创建此类宏并能够与其他人共享的任何想法数据?

谢谢!

4 个答案:

答案 0 :(得分:2)

看起来您的日期始终与字符串的长度相同。这是一个可能的解决方案:

orgDate = "2009 APR 01 00:00:00.000"

newDate = mid(orgDate,10,2) & "-" & mid(orgDate,6,3) & "-" & left(orgDate,4)

使用循环遍历每个单元格并执行上述字符串操作,然后将newDate放回单元格中。

答案 1 :(得分:2)


Function GetDateInMyFormat(exampleDate As String) As Date
On Error GoTo e
Dim year As String
Dim month As String
Dim day As String

Dim wantedDate As String

year = Mid(exampleDate, 1, 4)
month = Mid(exampleDate, 6, 3)
day = Mid(exampleDate, 10, 2)

wantedDate = year & "/" & month & "/" & day
GetDateInMyFormat = CDate(wantedDate)
Exit Function

e:

End Function

您可以创建XLA(XL插件)并将此功能添加为XL VBA的一部分 使用excel的addin对话框加载插件。这样,该功能将可用于工作簿。

并且,您可以在细胞上使用此功能,就像任何其他功能一样 如果您遇到任何问题,请告诉我。

用法:GetDateInMyFormat(“2009年4月1日00:00:00.000”) 返回4/1/2009

答案 2 :(得分:0)

假设Excel将它们识别为日期,您只需将单元格格式更改为正确的日期格式即可。突出显示列,右键单击 - >格式化单元格......

答案 3 :(得分:0)

我没有给你完整的答案,但这是我大致会做的事情:

  1. 获取整个电子表格的范围,以便了解必须迭代的内容。
  2. 遍历每个单元格。
  3. 在每个单元格上,检查它是否已经是日期格式。
  4. 如果单元格格式已经是日期格式,请使用以下代码:Selection.NumberFormat =“dd-mmm-yyyy”。
  5. 如果没有,则继续前进下一个单元格。
  6. 祝你好运!