Я столкнулся с трудной задачей, которую я не могу решить, используя множество обходных решений.Excel VBA - Преобразование формата даты
В одном столбце у меня даты, дата может быть в следующих трех форматов:
1) Простой дд/мм/гг
2) дд/мм/гг, но могут иметь слова " до, после или вокруг «вокруг». Любой один из них, и нам просто нужно удалить эти слова в этом случае.
3) Дата в цифровом формате. Длинные десятичные значения, такие как 1382923.2323 , но на самом деле я могу получить дату из него после преобразования.
Файл загружен здесь. Date_format_macro_link
Я написал следующий код, но это приводит к неправильным результатам.
Sub FormatDates_Mine()
ManualSheet.Activate
ManualSheet.Cells.Hyperlinks.Delete
ManualSheet.Cells.Interior.ColorIndex = xlNone
ManualSheet.Cells.Font.Color = RGB(0, 0, 0)
lastRow = ManualSheet.Range("A" & Rows.Count).End(xlUp).Row
Col = "A"
For i = 2 To lastRow
Cells(i, Col) = Trim(Replace(Cells(i, Col), vbLf, "", 1, , vbTextCompare))
If InStr(1, Cells(i, Col), "about", vbTextCompare) <> 0 Then
Cells(i, Col) = Trim(Replace(Cells(i, Col), "about", "", 1, , vbTextCompare))
Cells(i, Col).Interior.Color = RGB(217, 151, 149)
End If
If InStr(1, Cells(i, Col), "after", vbTextCompare) <> 0 Then
Cells(i, Col) = Trim(Replace(Cells(i, Col), "after", "", 1, , vbTextCompare))
Cells(i, Col).Interior.Color = RGB(228, 109, 10)
End If
If InStr(1, Cells(i, Col), "before", vbTextCompare) <> 0 Then
Cells(i, Col) = Trim(Replace(Cells(i, Col), "before", "", 1, , vbTextCompare))
Cells(i, Col).Interior.Color = RGB(228, 109, 10)
End If
DateParts = Split(Cells(i, Col), "/", , vbTextCompare)
Cells(i, Col) = Format(Cells(i, Col), "dd/mm/yyyy")
Next i
Range("D:E").HorizontalAlignment = xlCenter
End Sub
Файл загружен здесь. Date_format_macro_link
Пожалуйста, помогите!
Вы упомянули, как ваши данные выглядит, но вы не упомянули, что вы хотите с ним делать. Например, что происходит с 'Около 21/05/09'? Из вашего кода кажется, что вы хотите удалить все нежелательные символы и превратить их в дату? –
В ваших данных есть некоторые значения, которые не соответствуют критериям типа данных. Чтобы опустить эту проблему, вы можете использовать что-то вроде 'If IsDate (Cells (i, Col)) Then' перед установкой свойства' .Format'. Для других проблем см. Комментарий @SiddharthRout ... –
Я считаю, что вы можете сделать это только с помощью формулы рабочего листа ... и установить цвет с использованием условного форматирования –