Есть прекрасный сайт с производственным календарем для каждого года, начиная с 2014:
http://xmlcalendar.ru/?country=ru
Форматы там есть разные — например, XML (в этом формате у дат есть атрибут t с типом, и можно извлечь только праздничные (1) или только сокращенные рабочие дни (2) или рабочие СБ/ВС (тип 3)) или TXT, где просто список всех выходных и праздничных дней без типов.
Как получать данные? Можно разово вручную — скачать CSV и открыть в Excel или открыть ссылку с TXT-форматом, выделить все (Ctrl + A), скопировать (Ctrl + C) и вставить (Ctrl + V) в Excel.
Но так придется для каждого года вставлять данные вручную. Если вы хотите формулу, которая будет возвращать данные для текущего года, можно воспользоваться функциями ГОД / YEAR и СЕГОДНЯ / TODAY. Следующее сочетание будет возвращать номер текущего года:
ГОД(СЕГОДНЯ())
И его можно будет подставить в ссылку вместо значения конкретного года, так как ссылки меняются только на номер года:
http://xmlcalendar.ru/data/ru/
2024/calendar.txt
http://xmlcalendar.ru/data/ru/
2025/calendar.txt
Соответственно, ссылка на календарь текущего года в TXT-формате в формуле будет выглядеть так:
"http://xmlcalendar.ru/data/ru/" & ГОД(СЕГОДНЯ()) & "/calendar.txt"
А далее можно ее загрузить одной из функций. В Google Таблицах это IMPORTDATA:
=IMPORTDATA("http://xmlcalendar.ru/data/ru/" & YEAR(TODAY()) & "/calendar.txt")
В Excel (только на WIndows) это
ВЕБСЛУЖБА / WEBSERVICE. Чтобы она не возвращала все даты "слипшимся" списком в одной ячейке, добавим функцию
ТЕКСТРАЗД / TEXTSPLIT, чтобы разделить по переносу строку (символ с номером 10 — его нельзя напечатать, поэтому используем функцию
СИМВОЛ / CHAR):
=ТЕКСТРАЗД(ВЕБСЛУЖБА("http://xmlcalendar.ru/data/ru/"&ГОД(СЕГОДНЯ()) &"/calendar.txt");;СИМВОЛ(10))
Но Excel не воспринимает как даты эти значения. Придется немного поколдовать: убрать непечатаемые символы через функцию
ПЕЧСИМВ / CLEAN и сделать текст настоящей датой с помощью
ДАТАЗНАЧ / DATEVALUE:
=ДАТАЗНАЧ(ПЕЧСИМВ(ТЕКСТРАЗД(ВЕБСЛУЖБА("http://xmlcalendar.ru/data/ru/"&ГОД(СЕГОДНЯ()) &"/calendar.txt");;СИМВОЛ(10))))