我想知道是否可能,如果是这样,我怎样才能实现将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 行数的公式。
是否可以实现这一目标,还是必须将公式复制下来?
答案 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