Excel 一次换行四列(行到四列矩阵)
我在以下布局中有数据(每个“数字”在自己的列中,但都在Excel的第1行中): 我如何轻松地将其转换为: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$
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))