Создание расписания частоты, которое динамически обновляется в зависимости от даты начала и частоты кадров

Я хочу создать график частоты, в котором будет указано, когда каждое действие должно выполняться в течение года, на основе каденции раскрывающегося списка (ежедневно, ежемесячно, ежеквартально, раз в полгода) и даты начала. Поэтому, если это ежедневно, оно должно повторяться каждый день после даты начала. Если ежемесячно, то каждый месяц после даты начала и так далее.

На прикрепленном изображении показано, каким будет желаемый результат.

введите сюда описание изображения

Я могу достаточно легко вычислить ежедневные данные, используя функцию повтора и разделения, но мне трудно понять, как пропустить, скажем, 30/31 ячеек для ежемесячных и больше для ежеквартальных и полугодовых, основываясь на динамической каденции и Дата начала.

Доступ к образцу листа https://docs.google.com/spreadsheets/d/1-luCbmldWuGBEJJBYtHnBlFs60Ol5h7OIdNHdZKs3wM/edit?usp=sharing

Вам нужно найти функцию, которая возвращает дату, учитывая дату начала и количество дней от даты начала. Понятия не имею, что это будет в «google-sheets», но в C++ это находится в std::chrono. Рекомендую: перестаньте возиться в облаке и напишите приложение на своем любимом языке программирования.

ravenspoint 20.05.2024 17:12

Было бы полезно, если бы вы предоставили образец листа с реалистичными демонстрационными данными и ожидаемыми результатами (введенными вручную), чтобы мы могли получить четкое представление и разработать решение. Вы также можете использовать анонимный генератор пустых листов , предоставленный форумом сообщества документации на тот случай, если вы не хотите делиться листом из своей учетной записи Google.

rockinfreakshow 20.05.2024 17:33

Я добавил образец листа с желаемыми результатами.

Brian Parker 20.05.2024 18:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
77
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот один из подходов, который вы можете опробовать:

=let(Σ,index(match(,0/(A:A<>""))),map(A5:index(A:A,Σ),B5:index(B:B,Σ),lambda(a,b,if (or(a = "",b = ""),,map(C3:3,lambda(c,let(Λ,max(C3:3),
 if (a = "Daily",if (vlookup(c,sequence(Λ-b+1,1,b),1,),C1),
 if (ifna(vlookup(c,sort(edate(b,sequence(datedif (b,Λ,"m")+1,1,0,switch(a,"Monthly",1,"Quarterly",3,"Semi-Annually",6)))),1,)),C1,)))))))))

@ravenspoint Я согласен, что код rockinfreakshow можно было бы красиво напечатать, чтобы он был удобнее для глаз, но не вижу ничего плохого в логике. Языки формул электронных таблиц представляют собой функциональное программирование, которое отличается от императивных и объектно-ориентированных моделей. См. Лямбда-исчисление.

doubleunary 21.05.2024 10:23

альтернатива:

=INDEX(BYROW(A5:INDEX(A:A, MAX(ROW(A:A)*(A:A<>""))), 
 LAMBDA(a, LET(b, OFFSET(a,,1), d, C3:3, IF(((a = "Daily")*(b<=d))+
 ISNUMBER(MATCH(d, EDATE(b, SEQUENCE(1, DATEDIF(MIN(d), MAX(d), "M"),, 
 SWITCH(a, "Monthly", 1, "Quarterly", 3, "Semi-Annually", 6))), )), C1, )))))

демонстрация таблицы


бонус...

заполните даты от даты x до последнего столбца:

=SEQUENCE(1, COLUMNS(C3:3), "2024-01-01")

заполните даты от даты x до даты y:

=SEQUENCE(1, ABS("2024-01-01"-"2024-12-31")+1, "2024-01-01")

заполнить названия дней:

=INDEX(IF(C3:3 = "",,TEXT(C3:3, "ddd")))

Другие вопросы по теме