#google-sheets #google-sheets-formula
#google-листы #google-таблицы-формула
Вопрос:
У меня есть диапазон (B1:B7), содержащий даты, перечисленные ниже
1-Jan 1-Jan 1-Jan 2-Jan 2-Jan 2-Jan 3-Jan
Я хочу, чтобы этот диапазон повторялся N раз в зависимости от значения ячейки, а также увеличивал каждое значение диапазона на 7, когда диапазон повторяется каждый раз.
Например : Если значение в ячейке A1 = 3 , я хочу, чтобы диапазон дат повторялся 3 раза, начиная с ячейки A2, и увеличивал значения на 7 каждый раз, когда они повторяются.
Ожидаемый результат : 1 января 1 января 1 января 2 января 2 января 2 января 3 января 8 Января 8 Января 8 Января 9 Января 9 Января 9 Января 10 Января 15 января 15 Января 15 Января 16 января 16 Января 16 Января 17 Января
Ниже приведена формула, которую я использую для повторения диапазона. Но я не мог найти способ увеличить значения на 7, когда диапазон повторяется каждый раз.
=запрос(сглаживание(транспонирование(ARRAYFORMULA(разделение(повторение(B1:B7amp;» «,A1),» «)))),»где Col1 не равно нулю»)
Результат : 1-Ян 1-Ян 1-Ян 2-Ян 2-Ян 2-Ян 3-Ян 1-Ян 1-Ян 1-Ян 2-Ян 2-Ян 2-Ян 3-Ян 1-Ян 1-Ян 1-Ян 2-Ян 2-Ян 2-Ян 3-Ян
Ответ №1:
Учитывая точные диапазоны и спецификации в вашем посте, эта формула должна работать для вас в A2:
=ArrayFormula(FLATTEN(TRANSPOSE(FILTER(B:B,B:Blt;gt;"") SEQUENCE(1,A1,0,7))))
FILTER
создает виртуальный массив только ненулевых строк из B1:B.
К этим датам будут добавлены SEQUENCE
числа 1 в строке по столбцам [число в A1], начиная с 0 и пропуская по 7. В опубликованном примере, где A1 = 3, это SEQUENCE
будет выглядеть следующим образом: 0 7 14
(каждый в отдельном виртуальном столбце).
Эти числа будут добавлены к каждой дате, FILTER
чтобы сформировать сетку с таким количеством строк, как даты, и таким количеством столбцов, как число в A1.
Эта сетка используется TRANSPOSE
перед следующим шагом, чтобы сохранить даты в порядке вашего первоначального вертикального списка вместо того, чтобы откладывать горизонтальные добавления к каждому.
Затем сетка FLATTEN
преобразуется в один столбец.
Формула завернута, ArrayFormula( )
потому что она обрабатывает массивы, а не отдельные ячейки.
Имейте в виду, что вам может потребоваться отформатировать диапазон результатов (т. Е. A2:A) в формате даты по вашему выбору. В противном случае вы можете увидеть необработанные даты, которые будут числами в диапазоне 44000-45000.
Комментарии:
1. Большое спасибо, Эрик. Твоя формула сработала как заклинание. Вы помогли мне снять стресс, который я испытывал в течение последних 3 дней, пытаясь разобраться в этом. Желаю вам изобилия счастья.
2. Рад помочь вам успокоиться. Спасибо вам за ваши добрые пожелания.