Google Sheet - 使用arrayformula将两列转换为一列(超过50,000个字符)

时间:2018-02-05 02:49:45

标签: google-sheets array-formulas google-sheets-query

我正在使用Google表格并寻找能够将列表分为两列并在一列中交替排列的数组法。该工作表包含大约5,000行,每行超过35个字符。

enter image description here

我试过了:

=transpose(split(join(" ", query(transpose(B5:C),,50000)), " "))

但后来我收到了这条消息:

enter image description here

请看这里的表格:

https://docs.google.com/spreadsheets/d/11T1Roj1trviOSiiTZS292-4l3oODid7KLi9oGz3Z66o/edit#gid=0

3 个答案:

答案 0 :(得分:3)

编辑: 我真诚的道歉,我没有仔细阅读这个问题。我的回答不正确。

这应该有效:

 ={B5:B12;C5:C12}

小心不要将其改为

={B5:B;C5:C}

这将启动一个无限循环,其中电子表格将增加电子表格中的行数以允许此输出列扩展,但这样做会增加2个输入列的长度,这意味着输出列的长度会增加甚至更多,因此电子表格会尝试添加更多行等等。每当您尝试打开它时,它都会使您的工作表崩溃。或者

答案 1 :(得分:3)

假设你的2列是A和B,这个公式将" interlace"它们:

=query(
  sort(
    {arrayformula({row(A1:A3)*2, A1:A3});
     arrayformula({row(B1:B3)*2+1, B1:B3})}
  ),
  "select Col2")

Screenshot of interlacing formula

解释,从内部展开公式:

  1. 每个值根据行号乘以2(第2列+1)
  2. 获取唯一编号
  3. 根据此号码对所有内容进行排序
  4. 仅为结果提取第二列。

答案 2 :(得分:1)

在第5行:

=ArrayFormula(offset(B$5,INT((row()-5)/2),iseven(row()))) 

然而,需要将其复制下来。