Удаление метки времени из даты (текстовый формат) в Excel VBA - PullRequest
0 голосов
/ 28 октября 2019

У меня есть макрос Excel, получающий более 1000 записей из базы данных. Даты в данных выбираются с отметкой времени и в текстовом формате. Мне нужно отформатировать даты в формате ДД-МОН-ГГГГ и нужно удалить время.

Ввод:

2016-04-03 00: 00: 00

Ввод:

03-апр-2016

Iпробовал:

  1. Приведение всех столбцов даты к дате в запросе БД - макрос работает вечно, а Excel перестает отвечать.

  2. TRUNC(TO_DATE('PROJECT_START_DATE'),'YEAR') в запросе - выдает ошибку

  3. INT(Cell) или DateTime(Cell) в Excel - выдает ошибку

Может кто-нибудь предложить минималистский методчтобы достичь этого?

1 Ответ

0 голосов
/ 28 октября 2019

Если вы действительно получаете дату в текстовом формате, например 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 также должны работать, если у вас нет пробелов в конце строки. В этом случае он выдаст ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...