Excel VBA - формат номера кажется неизменным

У меня есть таблица excel, которая прямо из базы данных. Его первый столбец содержит даты, но не отформатирован как даты. Они написаны как: 03/01/2014, например. Поэтому я пытаюсь сравнить значения из некоторых ячеек, и проблема связана с датами типа людей: 3/01/2014. При сравнении значений не возвращается значение. Я использую команду range.find(). Поэтому я попытался изменить формат столбца даты в таблице, но он не изменился вообще. Однако, если я попытаюсь отредактировать ячейку и просто нажмите клавишу ввода, она станет обычной. Интересно, есть ли способ, чтобы я мог преобразовать все эти жесткие даты в таблицу в нормальные даты excel, чтобы процедура сравнения могла работать. Спасибо вам.

1 ответ

Выберите ячейки, даты которых вы хотите преобразовать и запустите этот небольшой макрос:

Sub DateSetter()
Dim r As Range, d As Date, st As String
For Each r In Selection
 st = r.Text
 If InStr(st, "/") <> 0 Then
 ary = Split(st, "/")
 d = DateSerial(CInt(ary(2)), CInt(ary(1)), CInt(ary(0)))
 r.Clear
 r.Value = d
 r.NumberFormat = "m/d/yyyy"
 End If
Next r
End Sub

Он должен выполнять преобразование, но игнорировать нули, пробелы и другие мусор.

licensed under cc by-sa 3.0 with attribution.