【问题标题】:Reverse date in excel [duplicate]在excel中反转日期[重复]
【发布时间】:2017-03-11 12:31:12
【问题描述】:

我想知道如何将日期“17/03/10”转换为“10/03/17”。

17 是年,03 是月,10 是日。我可以获取 VBA 代码以在 Excel 中使用吗?

【问题讨论】:

  • 向我们展示您的尝试
  • 您需要代码,还是只需要格式化单元格?您要转换的日期在哪里,转换后的值要显示在哪里?
  • 格式化不起作用,因为 excel 将 10 作为 2010 。
  • 我投票决定将其作为重复文件关闭,因为 YMD 格式几乎肯定来自文本导入,并且应该在正确的导入过程中更正,而不是事后修复,因为 CSV从文件资源管理器窗口中双击。
  • 顺便说一句,是否存在早于 2013 年的“伪日期”?您是否在 MDY 区域设置(典型的北美)?

标签: excel vba


【解决方案1】:

由于您使用引号,我假设这些是表示您要转换的日期的字符串,而不是日期值。

因此,试试这个:

strOldDate = "17/03/10"
strNewDate = Mid$(strOldDate, 7, 2) & "/" & _
             Mid$(strOldDate, 4, 2) & "/" & _
             Mid$(strOldDate, 1, 2)
MsgBox strNewDate  'Outputs "10/03/17"

【讨论】:

  • 嗨 M1chael 我想选择范围并更改格式。很抱歉造成误解。就像我展示的一个例子。像这样,当我在 17/03/10 获得日期格式时,我需要获得 10/03/17 的真实日期。如果有不同的日期如何申请?请帮忙
【解决方案2】:

试试下面,我已经放入一个函数中,这样你应该能够更容易地将它包含在你的代码中(甚至在公式中使用它)

'// The actual function
Function ReformatDate(WeirdDate As String) As Date
    ReformatDate = Right(WeirdDate, 2) _
        & Mid(WeirdDate, 3, 4) _
        & Left(WeirdDate, 2)
End Function

'// Testing with whatever is selected
Sub TestFixSelection()
    For Each Cell In Selection
        Cell.Value = ReformatDate(Cell.Value)
    Next
End Sub

'// Testing over a fixed range
Sub TestFixFixedRange()
    For Each Cell In [A1:A10]
        Cell.Value = ReformatDate(Cell.Value)
    Next
End Sub

请注意,这会更正字符串并将其转换为日期,而不是日期的字符串表示形式。不要害怕 Excel 日期,它们是你的朋友。

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多