#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 апреля ??