Измените формат даты так, чтобы формула DAYS () работала - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь с помощью VBA преобразовать формат даты в столбце таблицы, чтобы использовать его в формулах.

Столбец содержит даты в формате «общий», а не «дата» и выглядит следующим образом: 13/04/2019.Так что это должно быть дд / мм / гггг и распознано как дата.

Я посмотрел онлайн и изо всех сил пытаюсь найти что-то, что работает.Я пробовал:

.numberformat = "dd/mm/yyyy"

, но это не сработало

Это код, который я пытаюсь.

    With wsDormant.ListObjects("Table_Dormant_Stock").ListColumns.Add
        .DataBodyRange.Formula = "=DATE(RIGHT([@[Days Last Sold]],4), MID([@[Days Last Sold]],3,2), LEFT([@[Days Last Sold]],2))"
    End With

'Change date to amount of days
    With wsDormant.ListObjects("Table_Dormant_Stock").ListColumns.Add
        .DataBodyRange.Formula = "=DAYS($C$8,[Days Last Sold])"
         wsDormant.ListObjects("Table_Dormant_Stock").ListColumns("Days Last Sold").DataBodyRange.Value = .DataBodyRange.Value
        .Delete
    End With

Я получаю # значение, когда пробую формулу.Нужно преобразовать формат ячейки в дату.Формулы, использующие даты, похоже, не любят формат даты в дд / мм / гггг.Но довольны гггг / мм / дд.

1 Ответ

2 голосов
/ 23 апреля 2019

Сначала вы должны конвертировать ваши "псевдо-даты" в "реальные" даты.Выберите ячейки и запустите:

Sub FixDate()
    Dim d As Date, r As Range, v As String

    For Each r In Selection
        v = r.Text
        r.Clear
        arr = Split(v, "/")
        d = DateSerial(arr(2), arr(1), arr(0))
        r.Value = d
        r.NumberFormat = "dd/mm/yyyy"
    Next r
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...