TGTGInsightаналитика telegramLIVE / telegram public index
← Магия Excel
Магия Excel avatar

TGINSIGHT POST

Post #470

@lemur_excel

Магия Excel

Просмотры8,210Количество просмотров
Опубликован22 окт.22.10.2024, 12:16
Содержимое поста

Содержимое

Есть прекрасный сайт с производственным календарем для каждого года, начиная с 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))))