Страницы: 1
RSS
Вычисление в VBA по названию месяца его порядкового номера
 
Здравствуйте!
Помогите, пожалуйста, с решением проблемы. В книге есть листы «январь», «февраль», …, «декабрь». Мне нужно осуществить возможность сортировки листов как по возрастанию, так и по убыванию. Я пошёл в направлении того, что необходимо "выдернуть" порядковый номер месяца по его названию. Поискав в Интернете, нашёл формулу Serge 007:
Код
=МЕСЯЦ(B1&0)

,где в B1 название месяца. Пытаюсь переложить её на VBA
Код
=Month(Cells(1, 2) & 0)

ничего не получается. Формула работает, строка в VBA даёт ошибку. Подскажите, пожалуйста, где и в чём мои действия неверны? Или это вообще нужно решать по-другому? Нашёл ещё один вариант, где русские названия месяцев «упаковываются» в массив и оттуда тянутся номера, но мне видится, что эту задачу можно решить проще.
Спасибо!
 
Цитата
Поискав в Интернете, нашёл формулу Serge 007: =МЕСЯЦ(B1&0),
где в B1 название месяца.
Уверены? А справку почитать по МЕСЯЦ? И формула выдаст ошибку.
Я сам - дурнее всякого примера! ...
 
Как бы функции листа (формулы) и функции VBA (макросы) - это несколько разные вещи.
Впрочем, всё решаемо:
Код
Month("1-" & Cells(1, 2))
 
М.б. я не понял вопроса.
 
Цитата
AndreTM пишет:
Month("1-" & Cells(1, 2))
+5!
Я сам - дурнее всякого примера! ...
 
AndreTM,
Ура! Работает!  :)
Спасибо Вам и всем кто пытался помочь!
 
Долго "ломал" голову, но логику так и не понял!  :(  
Объясните, пжл, кто сможет, код, предложенный Андре.
Код
Month("1-" & Cells(1, 2))
Спасибо!
Изменено: iba2004 - 08.07.2013 16:02:42
 
Просто попробуйте вписать в любую ячейку название месяца, например "май". Это будет текст. Атеперь войдите в режим редактирования и допишите спереди "1-"(без кавычек). Что получится?
Я сам - дурнее всякого примера! ...
 
KuklP,
Да, кажется понял, получаем 01.май из которого "выдёргиваем" порядковый номер месяца. Правильно? Получается минус работает в качестве "&" ? Если да, то где же всё-таки логика?  :)
Изменено: iba2004 - 08.07.2013 16:52:34
 
Ну это "1-" & месяц будет работать только с месяцем, написанным на нужном языке.
Т.е. неуниверсально :(
 
Цитата
iba2004 пишет:
Получается минус работает в качестве "&"
Да нет же! Дефис тоже является стандартным разделителем даты. Экс неявно преобразовывает 1-май в 01.05.2013. Можете убедиться в строке формул. А это уже полновесная дата, с которой и month работает и ВБА понимает.
Я сам - дурнее всякого примера! ...
 
KuklP,
Теперь понял!!! Спасибо! Это равносильно вводу
Код
1/май

Ещё раз спасибо за подробное объяснение!!!
Изменено: iba2004 - 08.07.2013 17:17:45
Страницы: 1
Читают тему
Наверх