Измените формат даты, чтобы формула DAYS () работала

#excel #vba #date #format

#excel #vba #Дата #формат

Вопрос:

Я пытаюсь с помощью 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
  

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

Ответ №1:

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

 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
  

Комментарии:

1. Боже, это не отрицательно, просто пытаюсь понять; разве вы не можете просто изменить значение ячейки с помощью CDate , а затем изменить `.NumberFormat = «dd / mm / yyyy»‘, или я что-то упускаю?

2. @GMalc Я не знаю……………… если CDATE() видит 4/1/2010 , думает ли он, что 4 января или 1 апреля ??