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

Вход

Регистрация

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

 

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

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

Excel 2013
Добрый день.
Есть файл в нем написано значение даты на английском в формате 16-AUG-16. В данном случае в ячейке это форматом даты не является который мог эксель читать.
Попробовал хотя бы в число перевести сначала, постоянно возвращает #ЗНАЧ
Надо перевести в нормальный формат даты. В идеале 16.08.2016
Подскажите пожалуйста, можно что-нибудь придумать?
К сообщению приложен файл: __test.xlsx(8Kb)
 
Ответить
СообщениеДобрый день.
Есть файл в нем написано значение даты на английском в формате 16-AUG-16. В данном случае в ячейке это форматом даты не является который мог эксель читать.
Попробовал хотя бы в число перевести сначала, постоянно возвращает #ЗНАЧ
Надо перевести в нормальный формат даты. В идеале 16.08.2016
Подскажите пожалуйста, можно что-нибудь придумать?

Автор - Pirojok
Дата добавления - 19.08.2016 в 09:29
Dudeeldude Дата: Пятница, 19.08.2016, 10:26 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 1 ±
Замечаний: 20% ±

Excel 2016
Вручную автозаменой или примерно вот такой макрос:
допиши и подредактируй чуток
[vba]
Код
Sub Replace1()

' Replace1

Cells.Replace What:="-JUN-", Replacement:=".01.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="-AUG-", Replacement:=".08.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="-DEC-", Replacement:=".12.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("A:A").ColumnWidth = 12.57
End Sub
[/vba]


Сообщение отредактировал Manyasha - Пятница, 19.08.2016, 10:43
 
Ответить
СообщениеВручную автозаменой или примерно вот такой макрос:
допиши и подредактируй чуток
[vba]
Код
Sub Replace1()

' Replace1

Cells.Replace What:="-JUN-", Replacement:=".01.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="-AUG-", Replacement:=".08.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="-DEC-", Replacement:=".12.", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("A:A").ColumnWidth = 12.57
End Sub
[/vba]

Автор - Dudeeldude
Дата добавления - 19.08.2016 в 10:26
sboy Дата: Пятница, 19.08.2016, 10:26 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1014
Репутация: 255 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Выделяете ячейки и запускаете макрос
[vba]
Код
Sub DateENG()

en = Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")

rus = Array("янв", "фев", "март", "апр", "май", "июнь", "июль", "авг", "сен", "окт", "ноя", "дек")

            For Each cell In Selection
            With cell
                txt = Mid(.Value, 4, 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.mmm.yy"
                    Exit For
                    End If
                Next x
               End With
            Next cell
End Sub
End Sub
[/vba]
 
Ответить
СообщениеДобрый день.
Выделяете ячейки и запускаете макрос
[vba]
Код
Sub DateENG()

en = Array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC")

rus = Array("янв", "фев", "март", "апр", "май", "июнь", "июль", "авг", "сен", "окт", "ноя", "дек")

            For Each cell In Selection
            With cell
                txt = Mid(.Value, 4, 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.mmm.yy"
                    Exit For
                    End If
                Next x
               End With
            Next cell
End Sub
End Sub
[/vba]

Автор - sboy
Дата добавления - 19.08.2016 в 10:26
buchlotnik Дата: Пятница, 19.08.2016, 10:42 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3120
Репутация: 854 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
можно формулой
Код
=--ЗАМЕНИТЬ(A2;4;3;(ПОИСК(ПСТР(A2;5;2);"anebarprayunulugenktovec")+1)/2)

так чуть элегантнее:
Код
=--ЗАМЕНИТЬ(A2;4;3;ПОИСК(ПСТР(A2;5;2);"_anebarprayunulugenktovec")/2)
К сообщению приложен файл: _test_.xlsx(9Kb)


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru


Сообщение отредактировал buchlotnik - Пятница, 19.08.2016, 11:18
 
Ответить
Сообщениеможно формулой
Код
=--ЗАМЕНИТЬ(A2;4;3;(ПОИСК(ПСТР(A2;5;2);"anebarprayunulugenktovec")+1)/2)

так чуть элегантнее:
Код
=--ЗАМЕНИТЬ(A2;4;3;ПОИСК(ПСТР(A2;5;2);"_anebarprayunulugenktovec")/2)

Автор - buchlotnik
Дата добавления - 19.08.2016 в 10:42
Roman777 Дата: Пятница, 19.08.2016, 10:52 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 783
Репутация: 88 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добавлю своё в виде UDF:
[vba]
Код
Function EngDat(r As Range)
Dim o As Object
Set o = CreateObject("Scripting.Dictionary")
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "(\-\d{2}|\d{2}\-)"
Temp$ = objRegExp.Replace(r, "")
o.Add "JAN", "01"
o.Add "FEB", "02"
o.Add "MAR", "03"
o.Add "APR", "04"
o.Add "MAY", "05"
o.Add "JUN", "06"
o.Add "JUL", "07"
o.Add "AUG", "08"
o.Add "SEP", "09"
o.Add "OCT", "10"
o.Add "NOV", "11"
o.Add "DEC", "12"
objRegExp.Pattern = "\D{5}"
EngDat = objRegExp.Replace(r, "." & o(Temp) & ".")
End Function
[/vba]


Много чего не знаю!!!!
 
Ответить
СообщениеДобавлю своё в виде UDF:
[vba]
Код
Function EngDat(r As Range)
Dim o As Object
Set o = CreateObject("Scripting.Dictionary")
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "(\-\d{2}|\d{2}\-)"
Temp$ = objRegExp.Replace(r, "")
o.Add "JAN", "01"
o.Add "FEB", "02"
o.Add "MAR", "03"
o.Add "APR", "04"
o.Add "MAY", "05"
o.Add "JUN", "06"
o.Add "JUL", "07"
o.Add "AUG", "08"
o.Add "SEP", "09"
o.Add "OCT", "10"
o.Add "NOV", "11"
o.Add "DEC", "12"
objRegExp.Pattern = "\D{5}"
EngDat = objRegExp.Replace(r, "." & o(Temp) & ".")
End Function
[/vba]

Автор - Roman777
Дата добавления - 19.08.2016 в 10:52
Pirojok Дата: Вторник, 30.08.2016, 11:09 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо огромное. Работает отлично и элегантно)
 
Ответить
СообщениеСпасибо огромное. Работает отлично и элегантно)

Автор - Pirojok
Дата добавления - 30.08.2016 в 11:09
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Преобразовать текст с английской датой в обычную дату (Формулы/Formulas)
Страница 1 из 11
Поиск:

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