Как сделать макрос в Excel для изменения формата даты?
Всем привет!
Нужна помощь в Excel.
А именно в следующем: необходимо, чтобы Excel не переводил написанные в определённом формате цифры в дату и писал их строго в таком формате как нужно.
Речь идёт о файле с номерами договоров, они выглядят примерно так 2002/12-06, 2015/03-16 и т.д.
Всё это Excel видит как YYYY/MM-DD и переводит в DD.MM.YYYY.
А надо наоборот.
Если, к примеру, нажать на ячейку, в которой будет номер договора 2002/12-06 и далее перейти на другую ячейку, то Excel поменяет это значение на 06.12.2002.
В идеале нужен макрос или мини-функция в VBA, с кнопкой на этом же листе, по нажатию на которую всё будет приводиться к единому формату и в этом случае этот номер договора должен быть написан как 2002/12-06.
Фактически кнопка должна переводить формат DD.MM.YYYY в YYYY/MM-DD - это и есть основной смысл просьбы)
Например, открываешь файл, видишь там такие номера договоров как 12.06.2014, 05.08.2021 нажимаешь кнопку и эти значения меняются на 2014/06-12 и 2021/08-05. Вот так нужно как итог.
Денис _______________, спасибо. Но вот только когда меняю тип данных на текстовый, дата 12.06.2014 меняется на 41802. А надо чтобы было 2014/06-12.
А вот с макросами нужна помощь. Не затруднит прислать сам код (полный)?
arseny_art, Формат данных следует изменить ДО ТОГО КАК в ячейку вставляются данные. То есть ещё на пустой форме следует определить формат нужных ячеек/колонок как текст.
Альтернативно - добавьте одинарную кавычку к вставляемому значению как самый первый символ - т.е. вставляйте не 2002/12-06, а '2002/12-06.
arseny_art,
на листе выберите для ячейки тип данных Текстовый.
Для записи макросом после cells(y,x).value пропишите... еще можно добавить принудительно макросом автостроф перед вставляемыми данными, или пробел. Короче вся проблема в типах.
Akina, сейчас пока что помогает апостроф ' перед первой цифрой.
Файл выгружается из базы данных и там уже по сути данные заполнены и поэтому вариант с изменением типа данных ещё до ввода текста не поможет((
' Назначаем макрос на кнопку
btn.Name = "DateConversionButton"
btn.Characters.Text = "Конвертировать дату"
btn.OnAction = "ConvertDates"
End Sub
Sub ConvertDates()
Dim rng As Range
Dim cell As Range
' Определяем диапазон, содержащий даты
Set rng = ActiveSheet.UsedRange
' Конвертируем каждую дату в нужный формат
For Each cell In rng.Cells
If IsDate(cell.Value) Then
cell.Value = Format(cell.Value, "yyyy/mm/dd")
End If
Next cell
End Sub
После запуска макроса "CreateDateConversionButton", на листе Excel будет создана кнопка "Конвертировать дату". При нажатии на эту кнопку, макрос "ConvertDates" будет запущен, который найдет все ячейки в листе, содержащие даты, и конвертирует их в нужный формат "yyyy/mm/dd".