Google表格将2d数组连接到单个列并同时排序

时间:2017-01-25 09:21:45

标签: arrays google-sheets concatenation

我想知道是否可能,如果是这样,我怎样才能实现将8列和300多行的数组转换为排序,连接的一维数组,其中每一行都是8中内容的串联列。我还希望使用单一公式来实现这一目标。

示例:

leg | dog | tom | jon | bar |     |     |     |
foo | bin | git | hub | bet | far | day | bin |
...

会转换为:

bar dog jon leg tom
bet bin bin day far foo git hub
...

我可以用这个来实现这一行:

=arrayformula(CONCATENATE(transpose(sort(transpose(F2:M2),1,1))&" "))

只要8列是从F到M 然后,我可以将此公式复制300次以上,这很容易,但我想要一个填充 n 行数的公式。

是否可以实现这一目标,还是必须将公式复制下来?

3 个答案:

答案 0 :(得分:2)

如果我理解正确,你应该可以用这样的公式

来做到这一点
=ArrayFormula(transpose(query(transpose(A2:H8),,50000)))

更改范围以适应。 另见下图。

编辑:另一种方法可能是创建自定义公式(包括排序)。将其添加到脚本编辑器

function concatenateAndSort(range) {
  return range.map(function (r) {
  return [r.sort().join(" ")]
})
}

然后在电子表格中(您希望输出的位置)输入

=concatenateAndSort(A3:H8)

(改变范围以适应)。

答案 1 :(得分:0)

这样的事情应该这样做:

=transpose(split(" "&join(" ",index(sort(arrayformula({row(A1:A300),len(A1:A300)*0-9E+99
                                                      ;row(A1:A300),A1:A300
                                                      ;row(A1:A300),B1:B300
                                                      ;row(A1:A300),C1:C300
                                                      ;row(A1:A300),D1:D300
                                                      ;row(A1:A300),E1:E300
                                                      ;row(A1:A300),F1:F300
                                                      ;row(A1:A300),G1:G300
                                                      ;row(A1:A300),H1:H300
                                                      })),0,2))," "&-9E+99&" ",false))

首先,它创建一个二维数组,在第一列中包含原始行号,在第二列中为每个单元格创建值(为每行添加一个新值-9e99),然后对数组进行排序,丢弃第一列,所有值都使用空格连接,然后分割(通过空格包围的附加值),最后转置。

答案 2 :(得分:0)

=A2&" "&B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2&" "&H2

=JOIN(" "; A2:H2)

排序行:=TRANSPOSE(SORT(TRANSPOSE(JOIN(" ";A2:H2));1;TRUE))
然后: CTRL
+ SHIFT + ⇩向下键 ... CTRL + ENTER