我有很多信息,如下所示:
0 1 2 3 4 ...
'0 'C1 '81 '40 '1 ...
(供您参考:第二行包含十六进制数,我使用它是'
为了使 Excel 避免将'12
(即 18,十八)这样的值转换为 12(十二)。
我知道函数,例如=ToRow()
和=ToCol()
可以将数据转换为单行或单列。我还知道函数,例如=Sequence()
可以创建二维矩阵,但我找不到ToMatrix()
或ToArray()
函数。
有人知道在 Excel-365 中执行此操作的简单方法吗?
提前致谢
您可以使用 lambda 函数来实现:
转到公式/名称管理器/新建并输入:
v_stack
=LAMBDA(rng,cols,rows,IF(COLUMNS(rng)>cols,VSTACK(TAKE(rng,rows,cols),v_stack(DROP(rng,0,cols),cols,rows)),rng))
现在你有一个接受三个参数的“v_stack”函数
分解公式:
不确定这是否是您期望的顺序:
=WRAPROWS(TOCOL(A1:SR2,,1),32)
荷兰语:
=OMLOOP.RIJEN(NAAR.KOLOM(A1:SR2;;1);32)
或者:
=LET(a,A1:SR2,INDEX(a,1+MOD(SEQUENCE(32,,0),2),SEQUENCE(,32)+INT(SEQUENCE(32,,0,0.5))*32))
荷兰语:
=LET(a;A1:SR2;INDEX(a;1+REST(REEKS(32;;0);2),REEKS(;32)+GEHEEL(REEKS(32;;0;0,5))*32))
根据这个技术社区的答案,虽然可能有一些更简单的事情:
我唯一更改的是添加到
TRANSPOSE()
数组参数中,因为它们从 2 列而不是 2 行开始。并根据您的问题将包装计数更改为 32。然后对整个内容进行另一次转置。这将把两行换行到指定的宽度,然后将两个结果交错。
此版本只是通过依次扫描每个输出单元直接创建一个数组。