使用偏移量和数组公式转换数组

问题描述

我从谷歌表单中获取值,在一行中,交替使用两种类型的数据,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(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

解决方法

你可以这样做:

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

enter image description here


或者像这样:

={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))}

enter image description here