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

TGINSIGHT POST

Post #746

@lemur_excel

Магия Excel

Просмотры5,860Количество просмотров
Опубликован13 нояб.13.11.2025, 05:59
Содержимое поста

Содержимое

Получаем список с отдельными строками для каждой даты каждого этапа — одной формулой Нужно получить то, что справа. Из того, что слева. На сверхновых функциях это делается одной формулой: =LET(f; LAMBDA(x; LET(даты;ПОСЛЕД(СМЕЩ(x;0;2)-СМЕЩ(x;0;1)+1;;СМЕЩ(x;0;1));ГСТОЛБИК(РАЗВЕРНУТЬ(x;СЧЁТ(даты);;x);ТЕКСТ(даты;"ДД.ММ.ГГГГ")))); REDUCE({"Название";"Дата"};Данные[Название];LAMBDA(acc;val; ВСТОЛБИК(acc; f(val))))) Что тут происходит? Мы задаем функцию f. На входе она получает один параметр — в нашей задаче это название этапа. И делает следующее: берет даты на столбец и на два правее от названия этапа (это делает функция СМЕЩ / OFFSET). Превращает эти даты в последовательность дат от начала и до конца с помощью ПОСЛЕД / SEQUENCE. Соединяет (ГСТОЛБИК / HSTACK) эти даты с названием этапа, повторенным столько раз, сколько в нем дат. Повторяем этап с помощью функции EXPAND / РАЗВЕРНУТЬ. Ну а число дат в последовательности считаем через старый добрый СЧЁТ / COUNT. И далее эту функцию мы используем. В качестве первоначального аргумента в REDUCE мы отправляем заголовки, а далее накапливаем результат: пробегаемся по списку этапов, для каждого получаем таблицу с помощью написанной нами функции f, и добавляем полученные таблицы одна под другой с помощью ВСТОЛБИКа / VSTACK.