【问题标题】:Excel VBA code to transpose data from rows to columnsExcel VBA 代码将数据从行转换为列
【发布时间】:2017-08-11 20:40:58
【问题描述】:

我在 A 列中有 50000 行数据的数据。我需要将每 6 行数据转置为 6 列。例如,来自 A1:A6 的数据必须转置为 B1:G1。同样,来自 A7:A14 的数据必须转置到 B2:G2。如果有人可以为此提供 VBA 代码,我将不胜感激。

我在A列的数据如下所示:

Col A
1
2
3
4
5
6
7
8
9
10
11
12

转置数据必须如下图B列到G列:

Columns  B   C   D   E   F   G
         1   2   3   4   5   6
         7   8   9   10  11  12

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个:

    Sub TransposeRows()
        Dim rng As Range
        Dim i As Long
    
        Set rng = Range("A1")
        While rng.Value <> ""
            i = i + 1
            rng.Resize(6).Copy
            Range("B" & i).PasteSpecial Transpose:=True
            Set rng = rng.Offset(6)            
        Wend
        Application.CutCopyMode = False
    End Sub
    

    here得到这个。

    【讨论】:

      【解决方案2】:

      您不需要宏。在B1中输入:

      =OFFSET($A$1,COLUMNS($A:A)-1+(ROWS($1:1)-1)*6,0)
      

      然后上下复制:

      【讨论】:

      • 谢谢,但如果拖动/复制它会复制到所有单元格。
      【解决方案3】:

      我这边的其他变体:

      Sub TransposeRows2()
          Dim i&, z&, x&
          i = Cells(Rows.Count, "A").End(xlUp).Row
          z = 1: x = 1
          While z <= i
              Range("B" & x).Resize(, 6) = _
                  WorksheetFunction.Transpose(Range("A" & z).Resize(6))
              z = z + 6: x = x + 1
          Wend
      End Sub
      

      测试:

      【讨论】:

        【解决方案4】:

        在葡萄牙语 Excel 中,“Gary's Student”的公式,4 列而不是 6 列,变为:

        =DESLOCAMENTO($A$1;COLS($A:A)-1+(LINS($1:1)-1)*4;0)
        

        【讨论】:

          猜你喜欢
          • 2013-09-06
          • 1970-01-01
          • 2021-07-25
          • 2013-05-27
          • 1970-01-01
          • 1970-01-01
          • 2019-02-17
          • 1970-01-01
          相关资源
          最近更新 更多