我有一个功能代码,可以将行转换为列,并将列分成 15 行。该代码如下所示。
=WRAPCOLS(FILTER(TOCOL('Source Sheet'!A3:E30,,0),LEN(TOCOL('Source Sheet'!A3:E30,,0))),15,)
问题是,当行数据到达第 15 行时,15 行限制会将其分成单独的列。 我需要将行数据保留在一列中。这意味着,如果一行数据将分成两列,或者我需要用空白单元格填充一列的其余部分,那么我需要强制提前进行分列,以便本来要划分的行数据从下一个新列开始并保持在一起。
这个问题可以在下面的示例表中看到。源表中的许多数据行最终在显示表中的第 15 行处划分。 https://docs.google.com/spreadsheets/d/1qcRUtXKJ6y21G3leRf9EQ98xB4oyViX_Mr2sqVvGs2c/
你能想出一种方法,保证行数据在列中完整显示,而不会在列与列之间断裂吗?
这是一种方法,您可以测试一下:
=let(Λ,index(match(,0/(A:A<>""))), Ξ,indirect("A3:D"&Λ), Σ,hstack(Ξ,wrapcols("🐠",rows(Ξ),"🐠")),
Δ,query(reduce({0,1},sequence(rows(Σ)),lambda(a,c,let(σ,index(a,c,1)+counta(index(Σ,c)),vstack(a,if((σ-1)>15,{counta(index(Σ,c)),index(a,c,2)+1},{σ,index(a,c,2)}))))),"select Col2 offset 1"),
reduce(torow(,1),sequence(max(Δ)),lambda(a,c,ifna(hstack(a,index(substitute(tocol(filter(Σ,Δ=c),1),"🐠",)))))))