Форум по VBA и MS Office

VBA, Excel => Работа в программе "Excel" => Тема начата: Данила от 31 августа 2017, 13:33

Название: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 13:33
Добрый день! Как сделать автоматическое заполнение дней в ячейках В2:AF2 в зависимости от месяца года в объединённой ячейке над ними? Сменился месяц - числа проставились.
И как сделать месяц года автоматически меняющимся  в зависимости от текущего на месяц вперед. Сейчас например Август - в объединённой ячейке Сентябрь, завтра текущий месяц сменится на Сентябрь, в ячейке на Октябрь.
Ну и высший пилотаж - чтобы при переходе с меньшего числа дней на большее добавлялся столбец под прибавленные дни, а если наоборот, то убирался бы.
И в строке 3 в зависимости от дней недели дней месяца ставились бы Пн, Вт и так далее

Условное форматрование с подкрашиванием выходных сделаю сам.

Перезалил файл данных.

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 14:41
Наваял что-то. С месяцем никак не решается...

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 14:56
Сделано:
1) заполнение дней месяца в строке 2;
2) обрамление / убирание обрамления для дней 29 - 31. Здесь используется условное форматирование.

В ячейку "B1" я вписал дату в виде даты, а внешний вид изменил с помощью формата ячейки.
Во второй строке формулу есть смысл вставлять, начиная с числа 29, т.к. остальные числа во всех месяцах всегда одинаковые.

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:01
Сделано по этому пункту:
И как сделать месяц года автоматически меняющимся  в зависимости от текущего на месяц вперед. Сейчас например Август - в объединённой ячейке Сентябрь, завтра текущий месяц сменится на Сентябрь, в ячейке на Октябрь.

В "B1" используется формула:
=КОНМЕСЯЦА(СЕГОДНЯ();1)

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:05
Оптимизировал формулу для строки 2, т.к. теперь в "B1" подставляется последняя дата месяца и нет смысла использовать функцию "КОНМЕСЯЦА".

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:08
Сделал так, чтобы не было границ в первой строке, слева и справа, иначе нужно ещё и для этого делать УФ (но не знаю, заранее, можно ли сделать это с помощью УФ).

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 15:10
Все равно при смене даты на компьютере на следующий месяц, месяц в ячейке над днями не ставится на месяц больше.
Нужно, если сейчас сентябрь, был октябрь, если октябрь, был ноябрь. И так далее.
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:21
Функция "СЕГОДНЯ" сама по себе не пересчитывается, а пересчитывается после любого изменения в любом открытом эксель-файле.

Пересчитать формулы можно так: вкладка "Формулы" - группа "Вычисление" - Пересчет.
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 15:22
А дни недели в строке 3 только форматированием ячеек задать можно?
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:34
Сделано так, чтобы в строке 2 были даты, а не просто числа. Это иногда может понадобится.
Если не надо будет, то можно будет потом что-нибудь другое придумать.
В строке 3 так же даты, а дни недели подставляются форматом ячейки.

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:34
Дни недели в строку 3 можно формулой попробовать вставлять.
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 15:37
В этом файле дни недели подставляются формулой, то есть в ячейке фактически есть текст, например, слово "Пт".

[вложение удалено администратором]
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 15:44
Спасибо огромное... Я не знаю насколько можно знать эксель, чтобы так оперативно в нем разбираться. Видимо Вы БОГ ЭКСЕЛЯ или разработчик из команды Microsoft office, живущий в России...

В любом случае, спасибо, что вы есть...
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 15:50
Подскажите, почему, если я в ячейке В1 ставлю =МЕСЯЦ(СЕГОДНЯ()), он показывает Январь 1900?
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 16:03
В общем я понял, что формулу МЕСЯЦ(СЕГОДНЯ()) не подставить вместо формулы КОНМЕСЯЦА(СЕГОДНЯ();0)+1

Или можно? Меня ваше решение устраивает полностью, но у меня есть непонимание, хотелось бы прояснить...

МЕСЯЦ(31.08.2017())=8 месяц, почему когда я ставлю формат ММММ ГГГГ он интерпретирует это как начало календаря, заложенного в эксель? А в случае с вашей формулой все работает как часики?
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 16:11
Ведь логика одинаковая должна быть МЕСЯЦ(СЕГОДНЯ())+1 и КОНМЕСЯЦА(СЕГОДНЯ();0)+1
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 16:23
Нашел решение... =ДАТАМЕС(СЕГОДНЯ();1) и КОНМЕСЯЦА(СЕГОДНЯ();0)+1 - теперь всё уравнялось
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Данила от 31 августа 2017, 16:24
Всем спасибо...
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 16:28
Цитата:
=МЕСЯЦ(СЕГОДНЯ()), он показывает Январь 1900?

Функция МЕСЯЦ возвращает число от 1 до 12.
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 16:30
Функция КОНМЕСЯЦА возвращает дату. Например, 31.08.2017. Дата возвращается с последним числом. В данном примере дата возвращается с числом 31.
Название: Re: Excel: Автоматическое заполнение дней в зависимости от месяца
Отправлено: Администратор от 31 августа 2017, 16:33
Цитата:
МЕСЯЦ(31.08.2017())=8 месяц, почему когда я ставлю формат ММММ ГГГГ он интерпретирует это как начало календаря, заложенного в эксель?

Эксель рассматривает даты как числа: кол-во дней от 1 января 1900 года.
Если в ячейке число 8 и сделать формат "Дата", то будет 8 января 1900 года.