Страницы: 1
RSS
Формат даты MMM DD YYYY, Как преобразовать нестандартную дату
 
Есть столбец с датами формата MMM DD YYYY (Oct 30 2022), формат ячеек общий, требуется преобразовать в форму 30.10.2022. Подскажите, пожалуйста, как это сделать?
 
Как-то так, при условии, что нет лишних пробелов в начале и в конце:
=--(MID(A1;5;2)&"."&LEFT(A1;3)&"."&RIGHT(A1;4))
Изменено: memo - 30.10.2022 22:21:35
 
в соседней ячейке - формулой
в той же - макросом
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
memo написал:
при условии, что нет лишних пробелов в начале и в конце:
и региональных установок

=SUBSTITUTE(MID(C2;5;8);" ";"."&FIND(MID(C2;2;2);" anebrtprayunulugepctovec")/2&".")
или если нужна именно дата
=--SUBSTITUTE(MID(C2;5;8);" ";"."&FIND(MID(C2;2;2);" anebrtprayunulugepctovec")/2&".")
Изменено: БМВ - 30.10.2022 22:26:20
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
в соседней ячейке - формулой
в той же - макросом
Нужно в той же, поэтому и трудности в решении этой задачи
 
Цитата
написал:
и региональных установок
Кажется региональные установки стоят :(
 
Цитата
Lidia Eye написал:
Кажется региональные установки стоят
так они у всех стоят, только в азных регионах разные.
По вопросам из тем форума, личку не читаю.
 
Lidia Eye, Региональные установки есть у всех, вопрос какие, русские, американские...?) Введите дату в любую ячейку и выложите скриншот, так будет яснее.
Изменено: memo - 30.10.2022 23:16:18
 
OffTop: Вангую что следующий вопрос будет: как выставить нужные Региональныйе настройки?
Изменено: MikeVol - 30.10.2022 23:43:42
 
отметьте диапазон с датами
выполните этот макрос:
Код
Sub EnDate2Date()
  Dim c As Range, d, dt As Date, m&, ms, re, rg As Range
  Set d = CreateObject("Scripting.Dictionary"): dt = Date
  For m = 1 To 12
    dt = WorksheetFunction.EDate(dt, 1): d(Application.Text(dt, "MMM")) = Month(dt)
  Next
  Set re = CreateObject("VBScript.RegExp"): re.Global = True: re.Pattern = "\d+"
  Set rg = Selection
  For Each c In rg
    If d.exists(Left(c, 3)) Then
      Set ms = re.Execute(c.Value): c = CDate(ms(0) & "." & d(Left(c, 3)) & "." & ms(1))
    End If
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Power Query
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type with Locale" = Table.TransformColumnTypes(Source, {{"Column1", type date}}, "ru-RU")
in
    #"Changed Type with Locale"
 
Или для любых региональных настроек без цикла в неподражаемом стиле Казанского (если выделено более одной ячейки):
Код
Sub Test2()
  With Selection
    .NumberFormat = "M/D/YYYY"
    .Value = Application.Evaluate("=INDEX(SUBSTITUTE(" & .Address(, , Application.ReferenceStyle, True) & ","" "", "", ""),)")
  End With
End Sub
Изменено: sokol92 - 31.10.2022 16:25:14
Владимир
Страницы: 1
Наверх