Повторяйте строки в электронной таблице Google на основе значения ячейки (НО повторяющиеся строки должны находиться с интервалом в 7 дней)

У меня есть таблица Google с двумя листами: «Входной лист» и «Выходной лист». Я хотел бы, чтобы все строки во «Входном листе» повторялись и сохранялись в «Выходном листе» на основе значения ячейки в столбце H.

Я заставил репитер работать по следующей формуле (формула находится в ячейке A2 «Выходного листа»):

=ARRAYFORMULA(
     VLOOKUP(
        TRANSPOSE(SPLIT(QUERY(REPT(ROW('Input Sheet'!A2:A)&" ",'Input Sheet'!H2:H),,9^9)," ")),
        {ROW('Input Sheet'!A2:A),'Input Sheet'!A2:I},
        {1,2,3,4,5,6,7,8,9}+1,0
     )
)

Однако в «Листе вывода» значения в столбцах F и G просто повторяются на основе «Листа ввода». Я хотел бы, чтобы значения столбцов F и G были точными с разницей в 1 неделю. Например: ячейка F2 должна быть 07.04.2024, а ячейка G2 должна быть 13.04.2024. В ячейке F3 должно быть 14 апреля 2024 г., а в ячейке G3 должно быть 20 апреля 2024 г. и так далее...

Пожалуйста, немного помогите мне, как это сделать. Спасибо!

Я включил таблицу ниже:

https://docs.google.com/spreadsheets/d/14jxO12zW7SKe6e5TpmLA6nIdPjWP17XZtghGvWmgn1M/edit?usp=sharing

Включая визуальное представление моих текущих и желаемых результатов ниже:

> ТЕКУЩИЙ:

Week (Start) |  Week (End)  | Weeks

Apr 7, 2024  | Apr 27, 2024 | 3 (row 1)
Apr 7, 2024  | Apr 27, 2024 | 3 (row 2)
Apr 7, 2024  | Apr 27, 2024 | 3 (row 3)

> ЖЕЛАЕТСЯ:

Week (Start)  |  Week (End)  | Weeks

Apr 7, 2024   | Apr 13, 2024 | 3 (row 1)
Apr 14, 2024  | Apr 20, 2024 | 3 (row 2)
Apr 21, 2024  | Apr 27, 2024 | 3 (row 3)

Можете ли вы продемонстрировать свой идеальный ожидаемый результат, введя его вручную?!

rockinfreakshow 18.04.2024 18:06

Да, конечно, я добавил это в свой первоначальный вопрос!

Tapan 18.04.2024 19:09

Можете ли вы продемонстрировать весь результат в своем тестовом листе? это не просто образец...

rockinfreakshow 18.04.2024 19:16
Стоит ли изучать 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
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
=LET(rng,'Input Sheet'!A2:I, 
   arr,FILTER(rng,INDEX(rng,,1)<>""),
   WRAPROWS(TOROW(BYROW(arr, LAMBDA(r, TOROW(
     MAP(SEQUENCE(INDEX(r,,8)), LAMBDA(wk, 
       {CHOOSECOLS(r, SEQUENCE(4)), INDEX(r,,6)+7*(wk-1),
        INDEX(r,,6)+7*wk-1, INDEX(r,,9)}))))),1),7))
  1. Сначала BYROW передает массив arr построчно в LAMBDA, который сохраняет текущую строку в r.
  2. Формула этой LAMBDA представляет собой функцию MAP, которая передает ПОСЛЕДОВАТЕЛЬНОСТЬ, полученную на основе количества недель, в LAMBDA, которая сохраняет текущую неделю в wk.
  3. Формула этой LAMBDA возвращает массив для каждого wk, где:
    1. Первые 4 столбца — это первые 4 столбца из r,
    2. В пятом столбце указано значение недели (начало) от r с добавлением wk-1 недель.
    3. В шестом столбце указано значение недели (начала) с добавленными wk неделями.
    4. Седьмой и последний столбец — это часы из столбца 9 r.
  4. Поскольку функция BYROW требует, чтобы LAMBDA возвращала одну строку для каждой переданной строки, функция MAP заключена в TOROW.
  5. Результатом BYROW является массив, в котором каждая строка представляет одну строку из arr, но количество столбцов для каждой строки может варьироваться кратно 7.
  6. Чтобы получить массив всего из 7 столбцов, к результату применяется TOROW с включенным аргументомskip_blanks, затем используется WRAPROWS для переноса этой строки через каждые 7 столбцов.

Ох, спасибо вам огромное, вы просто молодец!!! Это мне очень помогло! Я только что внес небольшие изменения в формулу, чтобы изменить выходные данные для столбцов 5 и 6 в «Листе результатов», поскольку я хотел, чтобы начальная и конечная недели отличались на 1 неделю от начальной и последней недели соответственно. Вот моя новая формула! =LET(rng,'Входной лист'!A2:I, arr,FILTER(rng,INDEX(rng,,1)<>""), WRAPROWS(TOROW(BYROW(arr, LAMBDA(r, TOROW( MAP(SEQUENCE) (INDEX(r,,8)), LAMBDA(wk, {CHOOSECOLS(r, SEQUENCE(4)), INDEX(r,,6)+7*(wk-1), INDEX(r,,6)+7 *неделя-1, INDEX(r,,9)})))),1),7))

Tapan 19.04.2024 21:35

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

Blindspots 20.04.2024 02:05

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