【问题标题】:Transpose row four columns at a time (row to 4-column matrix)一次转置四列行(行到四列矩阵)
【发布时间】:2014-11-15 00:03:05
【问题描述】:

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

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

如何轻松将其转换为:

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

我希望每四条数据在单独的列中添加到彼此下方的新行中。

【问题讨论】:

    标签: excel excel-formula offset transpose worksheet-function


    【解决方案1】:

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

    =INDEX($A:$A,ROW(A1)*4-4+COLUMN(A1))
    

    详情: https://www.extendoffice.com/documents/excel/3360-excel-transpose-every-5-rows.html

    【讨论】:

      【解决方案2】:

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

      =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,而不是直接输入。)注意 $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
      

      或:

      ={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})
      

      【讨论】:

        【解决方案3】:

        如果您的数据从 A1 开始,请在 A3 中尝试,复制到 D 并向下以适合:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-10
          • 2021-12-04
          • 2021-04-30
          • 2022-12-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多