Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование текстовой даты в нормальную - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Преобразование текстовой даты в нормальную (Формулы/Formulas)
Преобразование текстовой даты в нормальную
anaumov Дата: Понедельник, 08.04.2019, 14:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!
Задача преобразовать дату, импортированную из другой программы в виде текста в настоящую дату.
Нашел на этом форуме решение:

[vba]
Код
Sub DateENG()

en = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")

rus = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")

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]
Правда потом потерял его. Доработал под себя немного. Работает.

Однако вот скрин:

Не могу понять, почему скрипт в одном случае интерпретирует дату правиль, а в другом путает местами число и месяц.
Что не так? :o
Помогите, пожалуйста. Заранее благодарен.
К сообщению приложен файл: 1956973.xlsx(9.1 Kb)


Сообщение отредактировал anaumov - Понедельник, 08.04.2019, 15:11
 
Ответить
СообщениеЗдравствуйте!
Задача преобразовать дату, импортированную из другой программы в виде текста в настоящую дату.
Нашел на этом форуме решение:

[vba]
Код
Sub DateENG()

en = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")

rus = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12")

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]
Правда потом потерял его. Доработал под себя немного. Работает.

Однако вот скрин:

Не могу понять, почему скрипт в одном случае интерпретирует дату правиль, а в другом путает местами число и месяц.
Что не так? :o
Помогите, пожалуйста. Заранее благодарен.

Автор - anaumov
Дата добавления - 08.04.2019 в 14:45
_Boroda_ Дата: Понедельник, 08.04.2019, 14:47 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15394
Репутация: 6028 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
- Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение- Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
- Оформите код тегами (в режиме правки поста выделите код и нажмите кнопку #, пояснялка здесь)

Автор - _Boroda_
Дата добавления - 08.04.2019 в 14:47
bmv98rus Дата: Понедельник, 08.04.2019, 15:06 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2333
Репутация: 401 ±
Замечаний: 20% ±

Excel 2013/2016
anaumov, и пока еще можно, в названии темы опечатку исправьте, Преоюразование глаз режет.


Замечательный медведь, процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 08.04.2019, 15:06
 
Ответить
Сообщениеanaumov, и пока еще можно, в названии темы опечатку исправьте, Преоюразование глаз режет.

Автор - bmv98rus
Дата добавления - 08.04.2019 в 15:06
_Boroda_ Дата: Понедельник, 08.04.2019, 15:11 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15394
Репутация: 6028 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А где макрос, который "немного. Работает"? Приведенный в тексте поста не работает и работать не может с такими данными


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА где макрос, который "немного. Работает"? Приведенный в тексте поста не работает и работать не может с такими данными

Автор - _Boroda_
Дата добавления - 08.04.2019 в 15:11
anaumov Дата: Понедельник, 08.04.2019, 15:22 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, там действительно работает макрос, который приведен выше, только с помощью имеемой у меня надстройки, я убрал (обрезал лишние символы в написании даты в тексте). Ну т.е. сначала привел вид колонки с датой в вид: Jan 1 2019, например.
 
Ответить
Сообщение_Boroda_, там действительно работает макрос, который приведен выше, только с помощью имеемой у меня надстройки, я убрал (обрезал лишние символы в написании даты в тексте). Ну т.е. сначала привел вид колонки с датой в вид: Jan 1 2019, например.

Автор - anaumov
Дата добавления - 08.04.2019 в 15:22
_Boroda_ Дата: Понедельник, 08.04.2019, 15:26 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15394
Репутация: 6028 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Мдя.
Держите
[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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеМдя.
Держите
[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
[/vba]

Автор - _Boroda_
Дата добавления - 08.04.2019 в 15:26
anaumov Дата: Понедельник, 08.04.2019, 15:29 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Вооо! Теперь понял. Спасибо огромное! Ща попробую. hands
 
Ответить
Сообщение_Boroda_, Вооо! Теперь понял. Спасибо огромное! Ща попробую. hands

Автор - anaumov
Дата добавления - 08.04.2019 в 15:29
anaumov Дата: Понедельник, 08.04.2019, 15:32 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Да, спасибо, круто работает!
 
Ответить
Сообщение_Boroda_, Да, спасибо, круто работает!

Автор - anaumov
Дата добавления - 08.04.2019 в 15:32
Russel Дата: Понедельник, 08.04.2019, 17:27 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1313
Репутация: 296 ±
Замечаний: 0% ±

Excel 2010
Нафига Вам эти макросы, держите формулу:
Код
=ДАТА(ПРАВБ(C1;4);(ПОИСК(ПСТР(C1;5;3);"JanFebMarAprMayJunJulAugSepOctNovDec")+2)/3;ПСТР(C1;9;2))


QIWI 9173973973
 
Ответить
СообщениеНафига Вам эти макросы, держите формулу:
Код
=ДАТА(ПРАВБ(C1;4);(ПОИСК(ПСТР(C1;5;3);"JanFebMarAprMayJunJulAugSepOctNovDec")+2)/3;ПСТР(C1;9;2))

Автор - Russel
Дата добавления - 08.04.2019 в 17:27
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Преобразование текстовой даты в нормальную (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!