Преобразование массива со смещением и arrayformula

#google-sheets

#google-таблицы

Вопрос:

Я получаю значения из формы Google в одной строке с чередованием двух типов данных 5 раз. Вот так : TypeA|TypeB|TypeA|TypeB|TypeA|TypeB|TypeA|TypeB|TypeA|TypeB

Я хочу преобразовать это в массив с двумя столбцами на другом листе:

 TypeA|TypeB
TypeA|TypeB
TypeA|TypeB
TypeA|TypeB
 

Мне удалось сделать это с помощью этой формулы:
=offset(DataSheet!$B$2,FLOOR((row()-2)/5),mod(row()-2,5)*2)

Я бы хотел поместить это в arrayformula, чтобы не перетаскивать формулу каждый раз, когда я отправляю форму. Я попробовал: =arrayformula(offset(DataSheet!$B$2,FLOOR((row(B2:B)-2)/5),mod(row(B2:B)-2,5)*2)) это работает для первой строки, но не распространяется на следующую строку, как ожидалось / желалось.

Что я упускаю из виду?

Вот пример таблицы: https://docs.google.com/spreadsheets/d/1nyN-V0ZjBsRU7-7I97lnLUQCsLpO8f27UlXtgoLa1j8?usp=sharing

Комментарии:

1. поделитесь копией своего листа

Ответ №1:

вы можете сделать это следующим образом:

 =QUERY({DataSheet!B2:C; DataSheet!D2:E; DataSheet!F2:G; DataSheet!H2:I; DataSheet!J2:K},
 "where Col1 is not null", 0)
 

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


или вот так:

 ={FLATTEN(FILTER(DataSheet!B2:K, MOD(COLUMN(DataSheet!B:K), 2)=0)),
  FLATTEN(FILTER(DataSheet!B2:K, MOD(COLUMN(DataSheet!B:K)-1, 2)=0))}
 

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