Увеличьте и повторите диапазон на основе значений ячеек в таблицах Google с ПОМОЩЬЮ ФОРМУЛЫ

#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. Рад помочь вам успокоиться. Спасибо вам за ваши добрые пожелания.