VBA 中的转置循环

Transpose loop in VBA

我正在尝试将值转置到同一个 sheet 上的新行中。有人可以帮助我使用正确的 vba 代码作为我正在寻找的输出吗?

鉴于:

Col1    Col2  Col3  Col4
Title1  A     B     C
Title2  D     E     
Title3  F
title4  G     H 

求职:

Col1    Col2  Col3  Col4
Title1  A          
Title1  B   
Title1  C
Title2  D     
Title2  E
Title3  F
Title4  G
Title4  H

这个快速宏应该可以缩短这个过程。

Sub transpose_in_place()
    Dim rw As Long, cl As Long
    With ActiveSheet
        For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
            For cl = .Cells(rw, Columns.Count).End(xlToLeft).Column To 3 Step -1
                If Not IsEmpty(.Cells(rw, cl)) Then
                    .Rows(rw + 1).Insert
                    .Cells(rw + 1, 1) = .Cells(rw, 1).Value2
                    .Cells(rw + 1, 2) = .Cells(rw, cl).Value2
                    .Cells(rw, cl).Clear
                End If
            Next cl
        Next rw
    End With
End Sub

顾名思义,它会就地执行转置,因此您或许应该在执行完整过程之前在实际数据的副本上对其进行测试。