Если вам нужно, чтобы сразу после открытия книги Excel, ячейки в которых дата совпадает с сегодняшней подсвечивались определённым цветом, то сделать это можно двумя способами:
- С помощью Условного форматирования.
- С помощью VBA.
Такое решение может понадобиться вам, если есть таблица Excel с днями рождения людей и вы не хотите пропустить этот день. Или, возможно у вас есть определённые важные даты с событиями и нужно чтобы они подсвечивались в тот день, когда это событие произошло.
Как по мне, то проще всего определить текущую дату в ячейках таблицы Excel используя Условное форматирование. Но VBA дает нам немного больше возможностей.
Определение текущей даты с помощью Условного форматирования
- Откройте Книгу Excel.
- Выделите диапазон ячеек в которых нужно будет искать текущую дату.
- На вкладке Главная в блоке команд Стили выберите Условное форматирование → Создать правило.
- В появившемся окне выберите Использовать формулу для определения форматируемых ячеек.
- В поле Форматировать значение для которых следующая формула является истиной введите =ТЕКСТ(B2;"d m")=ТЕКСТ(СЕГОДНЯ();"d m"). Этой формулой мы сравниваем даты без учета года. Для этого, с помощью функции ТЕКСТ, мы преобразуем значение ячейки B2 в текстовый формат, содержащий только день (d) и месяц (m). То же самое мы делаем и с текущей датой, которую получаем с помощью функции СЕГОДНЯ() – преобразуем значение в текстовый формат, содержащий только день и месяц. После этого, мы сравниваем текстовые результаты.
- Нажмите на кнопку Формат…
- В появившемся окне перейдите на вкладку Заливка и выберите цвет заливки который будет иметь та ячейка в которой дата совпадает с сегодняшней.
- Нажмите OK.
- Нажмите OK.
Теперь, каждый раз, при открытии книги Excel, в указанном вами диапазоне ячеек будет происходить сравнение значения ячейки с текущей датой. Если они совпадут, то ячейка будет закрашена в тот цвет который вы указали.
Поиск текущей даты в ячейках с помощью VBA
Чтобы реализовать аналогичную задачу с использованием VBA, можно создать макрос, который будет применять условное форматирование к ячейкам с датами, совпадающими с текущей.
Для этого:
- Откройте Книгу Excel.
- Сделайте клик правой кнопкой мыши по названию листа (в моем случае это Лист1) и в появившемся меню выберите Просмотреть код. Или нажмите Alt+F11.
- В окне Проектов VBA щелкните правой кнопкой мыши по ЭтаКнига (ThisWorkbook) и выберите пункт View Code.
- В окно редактирования кода вставьте приведенный ниже код и обязательно сохраните файл как Книга Excel с поддержкой макросов.
Код VBA для поиска и сравнения даты
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim todayDayMonth As String
' Указываем рабочий лист, где нужно проверять даты
Set ws = ThisWorkbook.Sheets("Лист1") ' Замените «Лист1» на название вашего листа
' Устанавливаем диапазон, который нужно проверить
Set rng = ws.Range("B2:B100") ' Замените на ваш диапазон ячеек
' Получаем текущий день и месяц в формате "d m"
todayDayMonth = Format(Now, "d m")
' Перебираем ячейки в диапазоне
For Each cell In rng
If Not IsEmpty(cell.Value) Then
If Format(cell.Value, "d m") = todayDayMonth Then
' Устанавливаем фон ячейки
cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый фон
Else
' Снимаем выделение (цвет фона), если дата не совпадает
cell.Interior.Color = xlNone
End If
End If
Next cell
End Sub
Теперь, каждый раз, при открытии данной книги, будет происходить сравнение значений в заданном вами диапазоне ячеек с текущей датой. И если значения будут совпадать, то заливка ячейки поменяется на нужный вам цвет.
