Excel 一次换行四列(行到四列矩阵)

Excel 一次换行四列(行到四列矩阵),excel,excel-formula,offset,transpose,worksheet-function,Excel,Excel Formula,Offset,Transpose,Worksheet Function,我在以下布局中有数据(每个“数字”在自己的列中,但都在Excel的第1行中): 我如何轻松地将其转换为: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 我希望每四个数据段在单独的列中添加到另一行下面的新行中。如果您的数据以A1开头,请尝试以A3开头,复制到D并向下以适应: =OFFSET($A$1,,COLUMN()+4*(ROW()-2)-5) 这已经得到了回答,但只是为了好玩,这里有一个版本是非易失性的,不需要放置在特定位置: =INDEX($A$1:$P$

我在以下布局中有数据(每个“数字”在自己的列中,但都在Excel的第1行中):

我如何轻松地将其转换为:

1 2 3 4  
5 6 7 8  
9 1 2 3  
4 5 6 7

我希望每四个数据段在单独的列中添加到另一行下面的新行中。

如果您的数据以A1开头,请尝试以A3开头,复制到D并向下以适应:

=OFFSET($A$1,,COLUMN()+4*(ROW()-2)-5)

这已经得到了回答,但只是为了好玩,这里有一个版本是非易失性的,不需要放置在特定位置:

=INDEX($A$1:$P$1,4*(ROW($A$1:$D$4)-1)+COLUMN($A$1:$D$4))
将上面的范围
$A$1:$p$1
替换为要重新排列的任何范围,并作为数组公式输入。(选择整个4x4范围,键入公式,完成后按ctrl-shift-enter键,而不是只按enter键。)请注意,
$A$1:$D$4
是一个常数,用于获取序列号

还有一种方法-较短的公式,但需要一些设置:

创建一个命名范围,我们称之为Matrix1:

1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
您可以将矩阵放在另一个(可能是隐藏的)工作表上,也可以只使用数组常量:

={1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1}
还有一个,我们称之为Matrix2:

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
或:

那么公式就是:

=MMULT(Matrix1*$A$2:$P$2,Matrix2)
再次选择整个4x4范围,并输入数组公式

当然,您可以直接在公式中输入数组常量,但这会变得很麻烦:

=MMULT({1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1}*$A$2:$P$2,{1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1})

我发现这个公式更容易处理

=INDEX($A:$A,ROW(A1)*4-4+COLUMN(A1))
详情如下:

=MMULT({1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1}*$A$2:$P$2,{1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1;1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1})
=INDEX($A:$A,ROW(A1)*4-4+COLUMN(A1))