For Each cell In Selection With cell txt = Mid(.Value, 1, 3) For x = 0 To UBound(en) If en(x) = txt Then .Replace What:=txt, Replacement:=rus(x), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False .Value = CDate(.Value) .NumberFormat = "dd.mm.yyyy" Exit For End If Next x End With Next cell End Sub
[/vba] Правда потом потерял его. Доработал под себя немного. Работает.
Однако вот скрин:
Не могу понять, почему скрипт в одном случае интерпретирует дату правиль, а в другом путает местами число и месяц. Что не так? Помогите, пожалуйста. Заранее благодарен.
Здравствуйте! Задача преобразовать дату, импортированную из другой программы в виде текста в настоящую дату. Нашел на этом форуме решение:
For Each cell In Selection With cell txt = Mid(.Value, 1, 3) For x = 0 To UBound(en) If en(x) = txt Then .Replace What:=txt, Replacement:=rus(x), LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False .Value = CDate(.Value) .NumberFormat = "dd.mm.yyyy" Exit For End If Next x End With Next cell End Sub
[/vba] Правда потом потерял его. Доработал под себя немного. Работает.
Однако вот скрин:
Не могу понять, почему скрипт в одном случае интерпретирует дату правиль, а в другом путает местами число и месяц. Что не так? Помогите, пожалуйста. Заранее благодарен.anaumov
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)
- Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума - Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)_Boroda_
_Boroda_, там действительно работает макрос, который приведен выше, только с помощью имеемой у меня надстройки, я убрал (обрезал лишние символы в написании даты в тексте). Ну т.е. сначала привел вид колонки с датой в вид: Jan 1 2019, например.
_Boroda_, там действительно работает макрос, который приведен выше, только с помощью имеемой у меня надстройки, я убрал (обрезал лишние символы в написании даты в тексте). Ну т.е. сначала привел вид колонки с датой в вид: Jan 1 2019, например.anaumov
Sub DateENG() en = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") rus = Array("Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек") Application.ScreenUpdating = 0 For Each с_ In Selection With с_ txt = Mid(.Value, 5, 6) For x = 0 To UBound(en) If en(x) = Left(txt, 3) Then .Value = CDate(Replace(txt, en(x), rus(x)) & Right(c_, 4)) .NumberFormat = "dd.mm.yyyy" Exit For End If Next x End With Next с_ Application.ScreenUpdating = 1 End Sub
[/vba]
Мдя. Держите [vba]
Код
Sub DateENG() en = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") rus = Array("Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек") Application.ScreenUpdating = 0 For Each с_ In Selection With с_ txt = Mid(.Value, 5, 6) For x = 0 To UBound(en) If en(x) = Left(txt, 3) Then .Value = CDate(Replace(txt, en(x), rus(x)) & Right(c_, 4)) .NumberFormat = "dd.mm.yyyy" Exit For End If Next x End With Next с_ Application.ScreenUpdating = 1 End Sub