0

我有一个 Excel 宏从数据库中获取 1000 多条记录。

数据中的日期是用时间戳获取的,并且是文本格式。我需要以 DD-MON-YYYY 格式格式化日期。

输入:
2016-04-03 00:00:00

输出:
2016 年 4 月 3 日

我试过了:

  1. 将数据库查询中的所有日期列转换为日期 - 宏将永远运行,并且 excel 停止响应。

  2. TRUNC(TO_DATE('PROJECT_START_DATE'),'YEAR')在查询中 - 引发错误

  3. INT(Cell)DateTime(Cell)在 excel 中 - 引发错误

4

1 回答 1

0

如果你真的像2016-04-03 00:00:00你的帖子那样以文本格式获取日期,那么你可以使用以下函数来获取没有时间戳的日期

Function cvtDt(inp As String) As Date
' inp is a string like 2016-04-03 00:00:00
    On Error GoTo EH

    cvtDt = CDate(Left(inp, 10))
    Exit Function

EH:
    cvtDt = 0
End Function

然后,以下子将您的示例数据以您在帖子中提到的格式写入工作表中的单元格。

Sub OutToXL()

    Dim val As Date
    val = cvtDt("2016-04-03 00:00:00")

    With Range("A1")
        .NumberFormat = "dd-mmm-yyyy"
        .Value2 = val
    End With

End Sub

INT除非字符串末尾有空格,否则也应该可以工作。在这种情况下,它会抛出一个错误。

于 2019-10-28T07:34:34.550 回答