Создание и вставка календаря в Excel — Office
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 5 мин
-
- Применяется к:
- Excel for Microsoft 365, Excel 2019, Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003
Аннотация
Эта статья содержит образец макроса Microsoft Visual Basic для приложений (подпрограммы), который запрашивает у вас месяц и год и создает календарь на месяц с помощью рабочего листа.
Решение
Примечание.
Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.
Для создания календаря выполните следующие действия.
Microsoft Excel 2003
- Создайте новую книгу.
- В меню Сервис выберите Макрос, затем выберите Редактор Visual Basic.
- В меню Вставка выберите пункт Модуль.
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В меню Файл нажмите Закрыть и вернуться в Microsoft Excel.
- Выберите вкладку Лист1.
- В меню Сервис выберите пункт Макрос, а затем нажмите Макросы.
- Нажмите CalendarMaker, а затем нажмите Выполнить для создания календаря.
Microsoft Excel 2007 или более поздние версии
- Создайте новую книгу.
- На ленте Разработчик выберите Visual Basic.
- В меню Вставка выберите пункт Модуль.
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В меню Файл нажмите Закрыть и вернуться в Microsoft Excel.
- Выберите вкладку Лист1.
- На ленте Разработчик щелкните Макрос.
- Нажмите CalendarMaker, а затем нажмите *Выполнить для создания календаря.
Примечание.
Если вкладка «Разработчик» не отображается, перейдите на вкладку «Параметры Excel» и включите ее. В Excel 2007 этот пункт размещен в меню
Пример процедуры Visual Basic
Sub CalendarMaker() ' Unprotect sheet if had previous calendar to prevent error. ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _ Scenarios:=False ' Prevent screen flashing while drawing calendar. Application.ScreenUpdating = False ' Set up error trapping. On Error GoTo MyErrorTrap ' Clear area a1:g14 including any previous calendar. Range("a1:g14").Clear ' Use InputBox to get desired month and year and set variable ' MyInput. MyInput = InputBox("Type in Month and year for Calendar ") ' Allow user to end macro with Cancel in InputBox. If MyInput = "" Then Exit Sub ' Get the date value of the beginning of inputted month. StartDay = DateValue(MyInput) ' Check if valid date but not the first of the month ' -- if so, reset StartDay to first day of month. If Day(StartDay) <> 1 Then StartDay = DateValue(Month(StartDay) & "/1/" & _ Year(StartDay)) End If ' Prepare cell for Month and Year as fully spelled out. Range("a1").NumberFormat = "mmmm yyyy" ' Center the Month and Year label across a1:g1 with appropriate ' size, height and bolding. With Range("a1:g1") .HorizontalAlignment = xlCenterAcrossSelection .VerticalAlignment = xlCenter .Font.Size = 18 .Font.Bold = True .RowHeight = 35 End With ' Prepare a2:g2 for day of week labels with centering, size, ' height and bolding. With Range("a2:g2") .ColumnWidth = 11 .VerticalAlignment = xlCenter .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .Font.Size = 12 .Font.Bold = True .RowHeight = 20 End With ' Put days of week in a2:g2. Range("a2") = "Sunday" Range("b2") = "Monday" Range("c2") = "Tuesday" Range("d2") = "Wednesday" Range("e2") = "Thursday" Range("f2") = "Friday" Range("g2") = "Saturday" ' Prepare a3:g7 for dates with left/top alignment, size, height ' and bolding. With Range("a3:g8") .HorizontalAlignment = xlRight .VerticalAlignment = xlTop .Font.Size = 18 .Font.Bold = True .RowHeight = 21 End With ' Put inputted month and year fully spelling out into "a1". Range("a1").Value = Application.Text(MyInput, "mmmm yyyy") ' Set variable and get which day of the week the month starts. DayofWeek = WeekDay(StartDay) ' Set variables to identify the year and month as separate ' variables. CurYear = Year(StartDay) CurMonth = Month(StartDay) ' Set variable and calculate the first day of the next month. FinalDay = DateSerial(CurYear, CurMonth + 1, 1) ' Place a "1" in cell position of the first day of the chosen ' month based on DayofWeek. Select Case DayofWeek Case 1 Range("a3").Value = 1 Case 2 Range("b3").Value = 1 Case 3 Range("c3").Value = 1 Case 4 Range("d3").Value = 1 Case 5 Range("e3").Value = 1 Case 6 Range("f3").Value = 1 Case 7 Range("g3").Value = 1 End Select ' Loop through range a3:g8 incrementing each cell after the "1" ' cell. For Each cell In Range("a3:g8") RowCell = cell.Row ColCell = cell.Column ' Do if "1" is in first column. If cell.Column = 1 And cell.Row = 3 Then ' Do if current cell is not in 1st column. ElseIf cell.Column <> 1 Then If cell.Offset(0, -1).Value >= 1 Then cell.Value = cell.Offset(0, -1).Value + 1 ' Stop when the last day of the month has been ' entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of ' days shown. Exit For End If End If ' Do only if current cell is not in Row 3 and is in Column 1. ElseIf cell.Row > 3 And cell.Column = 1 Then cell.Value = cell.Offset(-1, 6).Value + 1 ' Stop when the last day of the month has been entered. If cell.Value > (FinalDay - StartDay) Then cell.Value = "" ' Exit loop when calendar has correct number of days ' shown. Exit For End If End If Next ' Create Entry cells, format them centered, wrap text, and border ' around days. For x = 0 To 5 Range("A4").Offset(x * 2, 0).EntireRow.Insert With Range("A4:G4").Offset(x * 2, 0) .RowHeight = 65 .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .WrapText = True .Font.Size = 10 .Font.Bold = False ' Unlock these cells to be able to enter text later after ' sheet is protected. .Locked = False End With ' Put border around the block of dates. With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlLeft) .Weight = xlThick .ColorIndex = xlAutomatic End With With Range("A3").Offset(x * 2, 0).Resize(2, _ 7).Borders(xlRight) . Weight = xlThick .ColorIndex = xlAutomatic End With Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _ Weight:=xlThick, ColorIndex:=xlAutomatic Next If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _ .Resize(2, 8).EntireRow.Delete ' Turn off gridlines. ActiveWindow.DisplayGridlines = False ' Protect sheet to prevent overwriting the dates. ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _ Scenarios:=True ' Resize window to show all of calendar (may have to be adjusted ' for video configuration). ActiveWindow.WindowState = xlMaximized ActiveWindow.ScrollRow = 1 ' Allow screen to redraw with calendar showing. Application.ScreenUpdating = True ' Prevent going to error trap unless error found by exiting Sub ' here. Exit Sub ' Error causes msgbox to indicate the problem, provides new input box, ' and resumes at the line that caused the error. MyErrorTrap: MsgBox "You may not have entered your Month and Year correctly." _ & Chr(13) & "Spell the Month correctly" _ & " (or use 3 letter abbreviation)" _ & Chr(13) & "and 4 digits for the Year" MyInput = InputBox("Type in Month and year for Calendar") If MyInput = "" Then Exit Sub Resume End Sub
Вы можете добавить другой код, чтобы настроить календарь в соответствии с вашими потребностями. Вставьте дополнительные строки для ввода на экране для каждого дня или измените размер экрана, чтобы увидеть весь календарь в соответствии с размером и разрешением экрана.
Как создать конструктор месячного календаря в Microsoft Excel — очень легко
Приложения
0 1.401 3 минут на чтение
Текущая жизнь, которую ведут люди, очень динамична, и вам нужно творить чудеса со временем, чтобы разделить ее между рабочими встречами, проектами и личной жизнью. В тот момент, когда нам нужна помощь инструмент, который позволяет нам организовать наше время . Excel это идеальный инструмент для создания ежемесячного генератора календаря, и это очень просто сделать.
Календарь — это тот важный инструмент, который помогает нам организовать нашу деятельность . Его использование может быть множественным, в зависимости от потребностей каждого человека, его можно использовать в качестве расписания для более конкретного использования в качестве расписания.
Как создать генератор месячного календаря в Microsoft Excel?
Вы можете создать календарь с нуля в Excel, но это может занять много времени. Оттого Excel предлагает предустановленные шаблоны календаря. Существует много разнообразия, вы можете использовать шаблоны годового календаря (12 месяцев), ежемесячные календари, ежедневные календари и даже заметки.
Создайте ежемесячный календарь с нуля
Если вы хотите создать свой собственный календарь с нуля, вам необходимо выполнить следующие шаги.
- Введите текущий год в первую ячейку. Для этого введите формулу = СЕГОДНЯ (). Рядом с годом введите название месяца в другую ячейку с формулой = СЕГОДНЯ () и измените значение формат даты, который вы хотите отобразить .
- Добавьте дни недели в следующий ряд. Используйте одну ячейку в день. Сохраняйте одинаковую ширину ячеек на каждый день.
- Выделите весь лист, используйте комбинацию клавиш Ctrl + E и измените цвет заливки листа. Для этого используйте инструмент «Цвет заливки» на ленте «Главная».
- Теперь измените границы ящиков. Вы можете выбрать две ячейки (например, B3 и B4) и изменить границу на желаемый цвет. Повторите это действие 6 раз для каждого столбца и под каждым днем недели.
- Как только вы получите начальную диаграмму, вы должны скопировать это 12 раз за каждый месяц года.
- Поместите даты года в календарь. Вручную введите первые две даты в соответствующий день в зависимости от месяца. Теперь используйте функцию автозаполнения, выберите обе ячейки и перетащите выделение на остальные дни недели. Повторите эту технику для остальных, чтобы заполнить оставшиеся месяцы.
- Оставьте пустую строку для аннотаций. Доступная строка позволяет делать аннотации в течение месяца.
- Измените внешний вид календаря. Теперь вам нужно сформировать календарь, изменить тип шрифта и цвета. Вы можете настроить ячейки и даже соединить их вместе, чтобы конечный результат выглядел более профессионально.
Для более продвинутых пользователей предустановленный календарь может быть вставлен в Excel из инструмента CalendarMaker Visual Basic . Même Microsoft предоставляет образец кода для его реализации. В результате макрос, который создает ваш календарь чтобы можно было реализовать его с нуля.
Скачать шаблон календаря
В более новых версиях Microsoft Excel в окне «Пуск» отображается группа предварительно просмотренных форматов файлов, в которых вы можете выбрать тот, который вам нужен. В правом верхнем углу экрана Вариант календарей отображается , нажмите здесь.
Новые параметры календаря отображаются и все доступные модели, вы можете скачать . От календарей в социальных сетях до вечного календаря китайского знака зодиака.
Как только вы выберете один, он будет загружен с платформы Microsoft Online, это довольно легкие файлы и менее чем через секунду у вас будет доступный файл, чтобы изменить его по вашему желанию.
report this adПодобные предметы
Создание и вставка календаря в Excel — Office
Твиттер LinkedIn Фейсбук Эл. адрес
- Статья
- 6 минут на чтение
- Применимо к:
- Excel для Microsoft 365, Excel 2019, Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003
Сводка
В этой статье содержится пример макроса Microsoft Visual Basic для приложений (подпроцедура), который запрашивает месяц и год и создает ежемесячный календарь с помощью рабочего листа.
Разрешение
Примечание
Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации, без явных или подразумеваемых гарантий. Это включает, но не ограничивается, подразумеваемые гарантии товарного состояния или пригодности для конкретной цели. В этой статье предполагается, что вы знакомы с демонстрируемым языком программирования и инструментами, которые используются для создания и отладки процедур. Инженеры службы поддержки Майкрософт могут помочь объяснить функциональность конкретной процедуры, но они не будут изменять эти примеры, чтобы обеспечить дополнительную функциональность или создавать процедуры в соответствии с вашими конкретными требованиями.
Чтобы создать календарь, выполните следующие действия.
Microsoft Excel 2003
- Создайте книгу.
- В меню Инструменты укажите Макрос , а затем выберите Редактор Visual Basic .
- В меню Insert выберите Module .
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В файле выберите Закрыть и вернуться в Microsoft Excel .
- Выберите вкладку Sheet1 .
- В меню Инструменты укажите Макрос , а затем выберите Макрос .
- Выберите CalendarMaker , затем выберите Запустите , чтобы создать календарь.
Microsoft Excel 2007 или более поздней версии
- Создайте книгу.
- На ленте Developer выберите Visual Basic .
- В меню * Вставить выберите Модуль .
- Вставьте сценарий Visual Basic для приложений из раздела «Образец процедуры Visual Basic» на лист модуля.
- В меню Файл выберите Закрыть и вернуться в Microsoft Excel .
- Выберите вкладку Sheet1 .
- На ленте * Разработчик щелкните Макросы .
- Выберите CalendarMaker , а затем выберите * Запустите , чтобы создать календарь.
Примечание
Если лента разработчика не отображается, откройте параметры Excel, чтобы включить ее. В Excel 2007 этот параметр доступен в меню Popular . В Excel 2010 этот параметр доступен в меню Настройка ленты .
Пример процедуры Visual Basic
Sub CalendarMaker() ' Снимите защиту листа, если у него был предыдущий календарь, чтобы предотвратить ошибку. ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _ Сценарии: = Ложь ' Предотвращение мигания экрана при рисовании календаря. Application.ScreenUpdating = Ложь ' Настроить перехват ошибок. При ошибке Перейти к MyErrorTrap ' Очистить область a1:g14, включая любой предыдущий календарь. Диапазон("a1:g14").Очистить ' Используйте InputBox, чтобы получить желаемый месяц и год и установить переменную 'Мой ввод. MyInput = InputBox("Введите месяц и год для календаря") ' Разрешить пользователю завершать макрос с помощью Cancel в InputBox. Если MyInput = "", то выйдите из Sub ' Получить значение даты начала введенного месяца. StartDay = DateValue(MyInput) ' Проверяем, действительна ли дата, но не первое число месяца ' -- если да, сбросить StartDay на первый день месяца. Если День(НачальныйДень) <> 1 Тогда StartDay = DateValue(Месяц(StartDay) & "/1/" & _ Год(ДеньНачала)) Конец, если ' Подготовьте ячейку для месяца и года, как указано полностью. Range("a1").NumberFormat = "мммм гггг" ' Поместите метку Месяц и Год поперек a1:g1 с соответствующими ' размер, высота и полужирный шрифт. С диапазоном («a1: g1») .HorizontalAlignment = кслцентраксселектион . VerticalAlignment = кслцентр .Шрифт.Размер = 18 .Шрифт.Полужирный = Истина .RowHeight = 35 Конец с ' Подготовьте a2:g2 для меток дней недели с указанием центра, размера, 'высота и смелость. С диапазоном («a2: g2») .Ширина Колонки = 11 .VerticalAlignment = кслцентр .Горизонтальное выравнивание = кслцентр .VerticalAlignment = кслцентр .Ориентация = xlHorizontal .Шрифт.Размер = 12 .Шрифт.Полужирный = Истина .RowHeight = 20 Конец с ' Поместите дни недели в a2:g2. Диапазон ("a2") = "Воскресенье" Диапазон("b2") = "Понедельник" Диапазон("c2") = "Вторник" Диапазон("d2") = "Среда" Диапазон ("e2") = "Четверг" Диапазон("f2") = "Пятница" Диапазон("g2") = "Суббота" ' Подготовьте a3:g7 для дат с выравниванием по левому/верхнему краю, размеру, высоте ' и жирным шрифтом. С диапазоном («a3: g8») . Горизонтальное выравнивание = кслрайт .VerticalAlignment = кслтоп .Шрифт.Размер = 18 .Шрифт.Полужирный = Истина .RowHeight = 21 Конец с ' Поместите введенные месяц и год полностью в букву "a1". Range("a1").Value = Application.Text(MyInput, "мммм гггг") ' Установите переменную и получите, с какого дня недели начинается месяц. День недели = День недели (День начала) ' Установить переменные для идентификации года и месяца как отдельных ' переменные. CurYear = Год (День начала) ТекущийМесяц = Месяц(ДеньНачала) ' Установить переменную и вычислить первый день следующего месяца. FinalDay = DateSerial(ТекущийГод, ТекущийМесяц + 1, 1) ' Поместите "1" в ячейку первого дня выбранного ' месяц на основе DayofWeek. Выберите день недели дела Случай 1 Диапазон ("a3"). Значение = 1 Случай 2 Диапазон ("b3"). Значение = 1 Случай 3 Диапазон ("c3"). Значение = 1 Случай 4 Диапазон ("d3"). Значение = 1 Случай 5 Диапазон ("e3"). Значение = 1 Случай 6 Диапазон ("f3"). Значение = 1 Случай 7 Диапазон ("g3"). Значение = 1 Конец выбора ' Перебрать диапазон a3:g8, увеличивая каждую ячейку после "1" ' клетка. Для каждой ячейки в диапазоне («a3: g8») RowCell = ячейка.Строка ColCell = ячейка.Столбец ' Выполнить, если в первом столбце стоит "1". Если ячейка.Столбец = 1 И ячейка.Строка = 3 Тогда ' Выполнить, если текущая ячейка не находится в 1-м столбце. ElseIf cell.Column <> 1 Тогда Если cell.Offset(0, -1).Value >= 1 Тогда ячейка.Значение = ячейка.Смещение(0, -1).Значение + 1 ' Остановиться, когда последний день месяца ' поступил. Если ячейка.Значение > (FinalDay - StartDay) Тогда ячейка. Значение = "" ' Выход из цикла, когда в календаре будет правильное количество показаны дни. Выход для Конец, если Конец, если ' Делать только в том случае, если текущая ячейка находится не в строке 3, а в столбце 1. ИначеЕсли ячейка.Строка > 3 И ячейка.Колонка = 1 Тогда ячейка.Значение = ячейка.Смещение(-1, 6).Значение + 1 ' Остановиться, когда будет введен последний день месяца. Если ячейка.Значение > (FinalDay - StartDay) Тогда ячейка. Значение = "" ' Выход из цикла, когда в календаре правильное количество дней ' показано. Выход для Конец, если Конец, если Следующий ' Создайте ячейки ввода, отформатируйте их по центру, оборачивайте текст и обрамляйте около суток. Для х = от 0 до 5 Диапазон("A4"). Смещение(x * 2, 0).EntireRow.Insert С диапазоном ("A4: G4"). Смещение (x * 2, 0) .RowHeight = 65 .Горизонтальное выравнивание = кслцентр .VerticalAlignment = кслтоп .WrapText = Истина .Шрифт.Размер = 10 .Шрифт.Полужирный = Ложь ' Разблокируйте эти ячейки, чтобы иметь возможность вводить текст позже после ' лист защищен. .Заблокировано = Ложь Конец с ' Поместите рамку вокруг блока дат. С диапазоном ("A3"). Смещение (x * 2, 0). Изменить размер (2, _ 7).Границы(xlLeft) .Вес = XLThick .Колориндекс = кслаутоматик Конец с С диапазоном ("A3"). Смещение (x * 2, 0). Изменить размер (2, _ 7).Границы(xlRight) .Вес = XLThick .Колориндекс = кслаутоматик Конец с Диапазон("A3").Смещение(x * 2, 0).Resize(2, 7). BorderAround _ Вес:=xlThick, ColorIndex:=xlAutomatic Следующий Если Диапазон("A13").Значение = "" Тогда Диапазон("A13").Смещение(0, 0) _ .Resize(2, 8).EntireRow.Delete ' Отключить линии сетки. ActiveWindow.DisplayGridlines = False ' Защитите лист, чтобы предотвратить перезапись дат. ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _ Сценарии: = Верно ' Изменить размер окна для отображения всего календаря (возможно, потребуется настроить ' для настройки видео). ActiveWindow.WindowState = xlMaximized Активвиндов.ScrollRow = 1 ' Разрешить перерисовку экрана с отображением календаря. Application.ScreenUpdating = Истина ' Предотвратить переход к ловушке ошибок, если ошибка не обнаружена при выходе из Sub ' здесь. Выйти из подпрограммы ' Ошибка приводит к тому, что msgbox указывает на проблему, предоставляет новое поле ввода, ' и возобновляется со строки, вызвавшей ошибку. MyErrorTrap: MsgBox "Возможно, вы неправильно ввели месяц и год." _ & Chr(13) & "Правильно назовите месяц" _ & "(или используйте трехбуквенную аббревиатуру)" _ & Chr(13) & "и 4 цифры года" MyInput = InputBox("Введите месяц и год для календаря") Если MyInput = "", то выйдите из Sub Продолжить Конец сабвуфера
Вы можете добавить другой код, чтобы настроить календарь в соответствии с вашими потребностями. Вставьте дополнительные строки для ввода на экране для каждого дня или измените размер экрана, чтобы увидеть весь календарь в зависимости от размера и разрешения экрана.
Как сделать интерактивный календарь в Excel? (Шаблон на 2022 год)
Если вы хотите планировать заранее и составлять недельный или месячный график, вам может пригодиться календарь в Excel.
В этом уроке я покажу вам, как создать календарь в Excel, который автоматически обновляется при изменении значения месяца или года.
Я покажу вам точный процесс создания интерактивного ежемесячного и годового календаря, и у меня также есть файлы Excel для загрузки, чтобы вы могли использовать их в автономном режиме.
Вы можете распечатать эти шаблоны календарей и вручную создать расписание на бумаге.
Прежде чем я приступлю к созданию календаря в Excel, позвольте мне показать вам, как будет выглядеть окончательный результат.
Щелкните здесь, чтобы загрузить шаблон Excel на месяц
Щелкните здесь, чтобы загрузить шаблон Excel на год
В этом руководстве рассматриваются:
Демонстрация интерактивного календаря в Excel
youtube.com/embed/o1V2Fdygajo?feature=oembed&autoplay=1;base64,PGJvZHkgc3R5bGU9J3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWFyZ2luOjA7cGFkZGluZzowO2JhY2tncm91bmQ6dXJsKGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpL28xVjJGZHlnYWpvLzAuanBnKSBjZW50ZXIvMTAwJSBuby1yZXBlYXQnPjxzdHlsZT5ib2R5ey0tYnRuQmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42NSk7fWJvZHk6aG92ZXJ7LS1idG5CYWNrZ3JvdW5kOnJnYmEoMCwwLDApO2N1cnNvcjpwb2ludGVyO30jcGxheUJ0bntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Y2xlYXI6Ym90aDt3aWR0aDoxMDBweDtoZWlnaHQ6NzBweDtsaW5lLWhlaWdodDo3MHB4O2ZvbnQtc2l6ZTo0NXB4O2JhY2tncm91bmQ6dmFyKC0tYnRuQmFja2dyb3VuZCk7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTUwcHg7bWFyZ2luLXRvcDotMzVweH0jcGxheUFycm93e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXRvcDoxNXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206MTVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDoyNXB4IHNvbGlkICNmZmY7fTwvc3R5bGU+PGRpdiBpZD0ncGxheUJ0bic+PGRpdiBpZD0ncGxheUFycm93Jz48L2Rpdj48L2Rpdj48c2NyaXB0PmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpe3dpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uoe2FjdGlvbjogJ3BsYXlCdG5DbGlja2VkJ30sICcqJyk7fSk7PC9zY3JpcHQ+PC9ib2R5Pg==»> 9002 интерактивный ежемесячный календарь в Excel, где вы можете изменить значение месяца и года, и календарь будет автоматически обновляться (вы также можете выделить праздники или определенные даты другим цветом). Интерактивный ежемесячный календарь в ExcelОн также выделяет даты выходных дней другим цветом.
Нажмите здесь, чтобы загрузить шаблон ежемесячного календаря Excel
И в аналогичных строках ниже у меня есть шаблон годового календаря, где при изменении значения года календарь автоматически обновляется, чтобы предоставить вам календарь на этот год.
Интерактивный годовой календарь в ExcelДаты выходных выделены другим цветом, и если у вас есть список праздников (или важных дат, таких как крайние сроки проекта или дни рождения/юбилеи), то эти праздники также выделяются в календаре.
Теперь позвольте мне быстро объяснить, как я создал этот календарь в Excel.
Некоторые предварительные условия перед созданием интерактивного календаря в Excel
Хотя большая часть тяжелой работы в этом календаре выполняется с помощью нескольких простых формул. вам нужно подготовить несколько вещей, прежде чем вы сделаете этот календарь.
Наличие списка праздников и названий месяцев на отдельных листах
Прежде чем приступить к созданию календаря, вам необходимо иметь следующие два дополнительных листа:
- Лист со списком всех праздников и дат, на которые они приходятся. Вы также можете использовать это, чтобы добавить важные даты, которые вы хотите выделить в календаре (например, дни рождения, годовщины или крайние сроки проекта)
- Список всех названий месяцев. Это только для шаблона ежемесячного календаря и используется для создания раскрывающегося списка, в котором отображаются названия месяцев.
Если вы загрузите шаблон календаря для этого урока, вы увидите эти два дополнительных листа.
Для простоты я разделил эти два листа. Если вы хотите, вы также можете комбинировать даты праздников и названия месяцев на одном листе.
Для этого календаря я использовал праздники в США. Вы можете изменить их на праздники вашего региона и даже добавить важные дни, такие как дни рождения или годовщины, чтобы их можно было выделить в календаре.
Праздники (и другие указанные даты) выделяются в календареДанные из этого листа праздников будут использоваться для выделения дат праздников в календаре.
Создание раскрывающихся списков для отображения названий месяцев и значений года
Поскольку я хочу, чтобы этот календарь был интерактивным и позволял пользователю выбирать дату и значение года, я буду:
- Имею ячейку, в которую пользователь может вводить значение года
- Создайте раскрывающийся список, в котором будут показаны названия месяцев, из которых пользователь может выбрать месяц
Обратите внимание, что раскрывающийся список месяцев необходим только для шаблона месячного календаря, так как в шаблоне годового календаря в любом случае отображаются все месяцы.
Ниже приведены шаги для этого:
- Введите год в ячейку A1 и месяц в ячейку A2
- В ячейку B1 введите значение года вручную (в этом примере я буду использовать 2022)
- В ячейку B2 , создайте раскрывающийся список, в котором будут показаны все названия месяцев. Для этого вам нужно использовать имена, которые у нас уже есть на листе «Имена месяцев». Ниже приведены шаги для создания раскрывающегося списка в ячейке B2:
- Выберите ячейку B2
- Щелкните вкладку «Данные»
- В группе «Инструменты данных» щелкните значок «Проверка данных»
- В открывшемся диалоговом окне «Проверка данных» на вкладке «Настройки» в параметрах «Разрешить» selected
- В поле «Источник» введите = «Названия месяцев»! $A$1:$A$12 (или выберите поле, а затем перейдите на вкладку «Названия месяцев» и выберите названия месяцев в столбце A)
- Нажмите «ОК»
Вышеуказанные шаги дадут вам раскрывающийся список в ячейке B2, где вы можете выбрать название месяца.
Теперь, когда у нас есть место для ввода значения года и выбора названия месяца, наша цель — создать календарь, который будет автоматически обновляться, как только мы изменим значения месяца/года.
Итак, пришло время создать этот замечательный календарь в Excel.
Создание ежемесячного календаря в Excel (с автоматическим обновлением)
Вы можете загрузить этот шаблон ежемесячного календаря, нажав здесь
Первое, что мне нужно для создания этого ежемесячного календаря, это чтобы названия дней недели были в строке ( как показано ниже).
После ввода названия дня я также задал ему цвет фона и немного увеличил ширину столбца.
Теперь пришло время для формул.
Хотя я могу создать одну единственную формулу, которая даст мне значения в созданной мною календарной сетке, она станет довольно большой.
Итак, для целей этого урока позвольте мне разобрать его и показать вам, как он работает.
Чтобы формула работала, мне потребуются два значения:
- Номер месяца для выбранного месяца (1 — январь, 2 — февраль и т. д.)
- Получение значения дня недели для первого дня выбранного месяца (1, если месяц начинается в понедельник, 2, если он начинается во вторник и т. д.)
Формула для получения номера месяца выбранного месяца:
=MATCH($B$2,'Названия месяцев'!$A$1:$A$12,0)
Формула для получения значения дня недели первого дня месяца
=WEEKDAY(DATE($B$1,$M $4,1),2)
У меня есть вывод этих формул в ячейках M4 и M5, как показано ниже.
Теперь, когда у меня есть эти значения, я буду использовать их в основной формуле, которую буду использовать в сетке календаря.
Ниже приведена формула, которая даст мне даты в календаре:
=ЕСЛИ(МЕСЯЦ(ДАТА($B$1,$M$4,1)+ПОСЛЕДОВАТЕЛЬНОСТЬ(6,7)-$M$5)=$M $4,ДАТА($B$1,$M$4,1)+ПОСЛЕДОВАТЕЛЬНОСТЬ(6,7)-$M$5,"")
Это формула массива, поэтому вам просто нужно ввести ее в ячейку D5, а результат будет автоматически распространяться на все остальные ячейки календаря.
Примечание. Эта формула будет работать только в Excel для Microsoft 365, Excel 2021 и Excel для Интернета. Это связано с тем, что в нем используется функция ПОСЛЕДОВАТЕЛЬНОСТЬ, которая является новой формулой и недоступна в старой версии Excel.
Если вы не используете Excel для Microsoft 365 или Excel 2021, вместо этого вы можете использовать приведенную ниже формулу:
=ЕСЛИ(МЕСЯЦ(ДАТА($B$1,$N$4,1)+(СТРОКА()- 5) 7+СТОЛБЦ()-3-$N$5)=$N$4,ДАТА($B$1,$N$4,1)+(СТРОКА()-5) 7+СТОЛБЦ()-3-$ N$5,"")
Введите эту формулу в ячейку D5, а затем скопируйте и вставьте ее во все остальные ячейки сетки календаря.
Результатом формулы является порядковый номер даты, поэтому вы можете увидеть либо порядковый номер (например, 44562), либо дату.
Хотя этого достаточно, я хочу показать только номер дня.
Ниже приведены шаги по изменению формата ячеек, чтобы отображался только номер дня из значения даты:
- Выберите все ячейки в календаре
- Удерживайте клавишу Control и нажмите клавишу 1 (или Command + 1 при использовании Mac). Откроется диалоговое окно «Формат ячеек».
- Выберите вкладку «Числа» в диалоговом окне «Формат ячеек» (если она еще не выбрана)
- В параметрах категории. выберите Пользовательский
- В поле Тип введите d
- Нажмите OK
Вышеуказанные действия отобразят только номер дня в календаре.
Как я уже говорил, я разбил формулу, чтобы вам было легче понять, как она работает. В шаблонах, которые вы загружаете, я использовал только одну формулу для создания всего календаря.
Добавление динамического заголовка для календаря
Следующим шагом в создании этого динамического календаря будет добавление динамического заголовка, который будет сообщать нам, для какого месяца и года отображается календарь.
Хотя я вижу эти значения в ячейках P1 и P2, было бы проще создать заголовок, показывающий значение месяца и года прямо над календарем.
Для этого я использовал приведенную ниже формулу в ячейке D3:
=B2&" "&B1
Это простая формула конкатенации, которая объединяет значение в ячейке B2 и ячейке B1 (разделенные пробелом)
Если вы внесете какие-либо изменения в выбор месяца и года, это значение автоматически обновится вместе с календарем.
Я также внес следующие косметические изменения, чтобы он выглядел как заголовок и выровнялся по центру календаря:
- Выберите ячейку D3, измените цвет и размер текста и сделайте его полужирным
- По центру Текст, чтобы он отображался вверху по центру календаря (и выглядел как заголовок календаря). Для этого:
- Выберите ячейку D3:J3
- Щелкните правой кнопкой мыши и выберите Формат ячеек
- В диалоговом окне Формат ячеек щелкните вкладку Выравнивание
- Выберите опцию Center Across Selection в раскрывающемся списке Horizontal
- Нажмите OK
Выделите выходные дни
Это просто.
Просто выберите в календаре все дни, соответствующие выходным, и задайте им другой цвет.
В этом примере, поскольку суббота и воскресенье у меня выходные дни, я выделил эти внутренние светло-желтым цветом
Выделение праздников в календаре
И последнее, что я хочу сделать в этом календаре, это выделить все дни, которые являются праздниками в другом цвете.
В качестве одного из предыдущих шагов мы уже создали отдельный лист праздников, где я перечислил все праздники текущего года.
Примерно так, как показано ниже:
Ниже приведены шаги, чтобы выделить все эти праздничные даты в календаре:
- Выберите все ячейки в календаре (исключая название дня)
- Щелкните вкладку «Главная»
- В стилях нажмите «Условное форматирование»
- В параметрах условного форматирования нажмите «Новое правило 9».0006
- В диалоговом окне «Новое правило форматирования» выберите параметр «Использовать формулу для определения форматируемых ячеек»
- В появившемся поле введите следующую формулу: (D5,Holidays!$B:$B,1,0))
- Выберите формат, в котором вы хотите выделить ячейку с датой праздника (нажмите кнопку «Формат», чтобы выбрать цвет)
- Нажмите «ОК»
Приведенные выше шаги применяют правило условного форматирования к выбранным ячейкам, где каждая дата в календаре сверяется с предоставленным списком праздников.
В случае, если формула находит дату в списке праздников, она выделяется заданным цветом, иначе ничего не происходит
Все!
Если вы выполните описанные выше шаги, у вас будет интерактивный динамический ежемесячный календарь, который будет автоматически обновляться при выборе года и месяца. Он также автоматически выделял бы те даты, которые являются праздниками.
Щелкните здесь, чтобы загрузить шаблон Excel на месяц
Создание годового календаря в Excel (с автоматическим обновлением)
Вы можете скачать этот шаблон годового календаря, нажав здесь
Как и в случае с месячным календарем, вы также можете создать годовой календарь, который автоматически обновляется при изменении значения года.
Первым шагом в создании годового календаря является создание схемы, как показано ниже.
Здесь у меня есть значение года в первой строке, а затем я создал месячную сетку, где я буду заполнять даты за 12 месяцев. Я также выделил желтым цветом выходные дни (субботу и воскресенье).
Для годового календаря нам не нужен лист с названиями месяцев, но мы все равно будем использовать список праздников на листе «Праздники», чтобы выделить те даты, которые являются выходными.
Теперь давайте начнем строить этот годовой календарь.
Названия месяцев над каждым месяцем Календарь
Чтобы этот годовой календарь работал, мне нужно каким-то образом ссылаться на значение месяца в формулах для этого месяца (например, 1 для января, 2 для февраля и т. д.)
Позвольте мне показать вам крутой трюк, который позволит мне использовать номер месяца, но в то же время вместо номера показывать название месяца вместо
Для этого выполните следующие шаги:
- В ячейку B3, которая является крайней левой ячейкой над сеткой календаря первого месяца, введите 1
- Выбрав ячейку B3, удерживайте клавишу Control и нажмите 1. (или Command + 1 для Mac). Откроется диалоговое окно «Формат ячеек».
- В диалоговом окне «Формат ячеек» убедитесь, что выбрана вкладка «Число». справа введите текст «Январь»
- Нажмите «ОК».
Приведенные выше шаги отформатируют ячейку B3, чтобы отобразить полное название месяца. И хорошо в этом то, что значение в ячейке по-прежнему остается 1, и я могу использовать эти значения в формулах.
Таким образом, хотя значение в ячейке B3 равно 1, оно отображается как январь.
Круто… правильно!
Когда вы делаете это выше, вы можете увидеть знаки ## вместо названия месяца. Это происходит, когда ширины ячейки недостаточно для размещения всего текста. Не о чем беспокоиться — это будет отсортировано, мы выравниваем текст по центру (рассмотрено далее)
Вам нужно повторить один и тот же процесс для всех месяцев, где вы вводите номер месяца в верхнюю левую ячейку в приведенной выше строке вне сетки календарного месяца (I,e, 2 в J3 и 3 в R3, и 4 в M12 и так далее).
И для всех этих чисел нужно открыть диалоговое окно форматирования ячеек и указать название месяца для каждого числа.
Это одноразовая настройка, и вам не нужно будет делать это снова.
Кроме того, вы можете изменить положение названия месяца, чтобы оно отображалось в центре над сеткой месячного календаря.
Вы можете сделать это, используя технику Center Across Selection.
Для этого:
- Выберите ячейку B3:h4 (для месяца января)
- Щелкните правой кнопкой мыши и выберите Формат ячеек
- В диалоговом окне Формат ячеек щелкните вкладку Выравнивание
- Выберите параметр Центрировать по выделенному в горизонтальном раскрывающемся списке
- Нажмите OK
После этого названия месяцев будут отображаться прямо над ежемесячным календарем и выровнены по середине.
Вы также можете отформатировать название месяца, если хотите. В календаре, который я сделал, я выделил название месяца жирным шрифтом и изменил цвет на синий.
После того, как вы сделаете это для всех месяцев, у вас будет готовая структура, и мы сможем приступить к вводу формул.
Формулы для создания динамического годового календаря
Подобно месячному календарю, вы можете использовать приведенную ниже формулу для января:
=ЕСЛИ(МЕСЯЦ(ДАТА($B$1,$B$3,1)+ПОСЛЕДОВАТЕЛЬНОСТЬ(6, 7)-ДЕНЬ НЕДЕЛИ(ДАТА($B$1,$B$3,1),2))=$B$3,ДАТА($B$1,$B$3,1)+ПОСЛЕДОВАТЕЛЬНОСТЬ(6,7)-ДЕНЬ НЕДЕЛИ(ДАТА( $B$1,$B$3,1),2),"")
Как только вы введете в ячейку B5 формулу за январь, она выльется и заполнит всю сетку за месяц.
И снова, поскольку мы используем формулу ПОСЛЕДОВАТЕЛЬНОСТЬ, вы можете использовать ее только в Excel для Microsoft 365, Excel 2021 и Excel для Интернета.
Эту же формулу можно использовать и для других месяцев с одним небольшим изменением (замените $B$3 на $J$3 для февраля, $B$3 на $R$3 для марта и т. д.).
Это связано с тем, что у нас есть номер месяца для каждого месяца в другой ячейке, и нам нужно ссылаться на значение месяца для каждого месяца в формуле.
Выделение праздников в календаре
И последний шаг создания этого динамического годового календаря — выделение праздничных дат (эти даты указаны в таблице праздников).
Ниже приведены шаги для этого:
- Выберите все ячейки для месяца января (B5:h20)
- Щелкните вкладку «Главная»
- Щелкните «Условное форматирование»
- варианты в раскрывающемся списке
- В диалоговом окне «Новое правило форматирования» выберите параметр «Использовать формулу для определения форматируемых ячеек»
- В появившемся поле введите следующую формулу: Праздники!$B:$B,1,0))
- Нажмите кнопку «Формат», чтобы указать формат ячеек (я выбрал желтый цвет с красной рамкой)
- Нажмите «ОК»
Вышеуказанные шаги проверьте все даты в январе и выделите те, которые отмечены как праздничные дни в рабочем листе праздничных дней.