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
顾名思义,它会就地执行转置,因此您或许应该在执行完整过程之前在实际数据的副本上对其进行测试。
我正在尝试将值转置到同一个 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
顾名思义,它会就地执行转置,因此您或许应该在执行完整过程之前在实际数据的副本上对其进行测试。