Всех приветствую! Есть проблема. На листе есть пару столбцов с датами (начало и окончание). Формат для даты я выбрал типа 01.01.2019 в обоих столбцах. По двойному клику срабатывает макрос - выпадает календарь и даты можно выбрать. Ну или вручную дату можно занести. Но иногда есть необходимость писать только год.. без числа и месяца. Пока кроме как '2019 в голову не приходит. Если без апострофа написать 2019, то дата получается 11.07.1905. Есть какой то способ решить данный вопрос, или с апострофом писать? В этом случае не корректно фильтрация работает по датам.
Всех приветствую! Есть проблема. На листе есть пару столбцов с датами (начало и окончание). Формат для даты я выбрал типа 01.01.2019 в обоих столбцах. По двойному клику срабатывает макрос - выпадает календарь и даты можно выбрать. Ну или вручную дату можно занести. Но иногда есть необходимость писать только год.. без числа и месяца. Пока кроме как '2019 в голову не приходит. Если без апострофа написать 2019, то дата получается 11.07.1905. Есть какой то способ решить данный вопрос, или с апострофом писать? В этом случае не корректно фильтрация работает по датам.ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Я изменила формат на ГГГГ, но не уверена, что правильно поняла. То есть Вы с помощью календаря вводите дату, а хотите видеть год? Или Вы вводите руками именно год? Во втором случае мой вариант не подойдёт. А календаря в файле нет
Я изменила формат на ГГГГ, но не уверена, что правильно поняла. То есть Вы с помощью календаря вводите дату, а хотите видеть год? Или Вы вводите руками именно год? Во втором случае мой вариант не подойдёт. А календаря в файле нетPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Вставлю свои "5 копеек". Мой вариант такой: * в целом форматировать колонки A и B как даты * при необходимости ввести один год - очищать датовый формат в отдельной ячейке до общего при помощи комбинации Ctrl+Shift+~ (до ввода или после него).
Это на тот случай, если "только год" в ячейке интересует именно как число. Если же без разницы, то вариант с апострофом по количеству нажимаемых клавиш, конечно, короче упомянутой комбинации.
Вариант с УФ поначалу понравился, но потом несколько озадачил тем, что в ячейках получаются целые числа, а не даты, и, соответственно, автофильтр при этом предлагает числовые фильтры вместо фильтров по датам (по крайней мере, у меня в 2013 это так - может, в 2016 лучше?)...
P.S. Ну и поскольку тема всё ж таки в разделе VBA, то вот коротенькая процедура события изменения в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("A:B"), Target) Is Nothing Then Exit Sub If Target.Value < 9999 Then Target.NumberFormat = "General" End Sub
[/vba] Автоматизация же использования апострофа, делающая "только год" текстовым значением, несколько более многословна: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("A:B"), Target) Is Nothing Then Exit Sub If Target.Value < 9999 Then Application.EnableEvents = False Target.Value = "'" & CLng(Target.Value) Application.EnableEvents = True End If End Sub
[/vba]
Вставлю свои "5 копеек". Мой вариант такой: * в целом форматировать колонки A и B как даты * при необходимости ввести один год - очищать датовый формат в отдельной ячейке до общего при помощи комбинации Ctrl+Shift+~ (до ввода или после него).
Это на тот случай, если "только год" в ячейке интересует именно как число. Если же без разницы, то вариант с апострофом по количеству нажимаемых клавиш, конечно, короче упомянутой комбинации.
Вариант с УФ поначалу понравился, но потом несколько озадачил тем, что в ячейках получаются целые числа, а не даты, и, соответственно, автофильтр при этом предлагает числовые фильтры вместо фильтров по датам (по крайней мере, у меня в 2013 это так - может, в 2016 лучше?)...
P.S. Ну и поскольку тема всё ж таки в разделе VBA, то вот коротенькая процедура события изменения в модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("A:B"), Target) Is Nothing Then Exit Sub If Target.Value < 9999 Then Target.NumberFormat = "General" End Sub
[/vba] Автоматизация же использования апострофа, делающая "только год" текстовым значением, несколько более многословна: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("A:B"), Target) Is Nothing Then Exit Sub If Target.Value < 9999 Then Application.EnableEvents = False Target.Value = "'" & CLng(Target.Value) Application.EnableEvents = True End If End Sub