好久没更新了,再放两段代码。
工作时间长了 vba 越用越少
这段代码将选中的表格按行列拆开变成原始的数据,可以看成数据透视表的逆向操作。
选中区域运行就好。速度应该也快。输出是在选中区域的右边
代码比较精简,希望可以给大家提供些思路。
Sub UnPivot()
Dim i As Integer
Selection.Resize(1, 3).Offset(0, Selection.Columns.Count + 1) = Array("RowHeader", "ColumnHeader", "Value")
For i = 2 To Selection.Columns.Count
With Selection.Resize(Selection.Rows.Count - 1, 1).Offset(1 + (i - 2) * (Selection.Rows.Count - 1), Selection.Columns.Count)
.Offset(0, 1) = Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1, 1).Value
.Offset(0, 2) = Selection.Cells(1, i).Value
.Offset(0, 3) = Selection.Offset(1, i - 1).Resize(Selection.Rows.Count - 1, i).Value
End With
Next
End Sub
工作时间长了 vba 越用越少
这段代码将选中的表格按行列拆开变成原始的数据,可以看成数据透视表的逆向操作。
选中区域运行就好。速度应该也快。输出是在选中区域的右边
代码比较精简,希望可以给大家提供些思路。
Sub UnPivot()
Dim i As Integer
Selection.Resize(1, 3).Offset(0, Selection.Columns.Count + 1) = Array("RowHeader", "ColumnHeader", "Value")
For i = 2 To Selection.Columns.Count
With Selection.Resize(Selection.Rows.Count - 1, 1).Offset(1 + (i - 2) * (Selection.Rows.Count - 1), Selection.Columns.Count)
.Offset(0, 1) = Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1, 1).Value
.Offset(0, 2) = Selection.Cells(1, i).Value
.Offset(0, 3) = Selection.Offset(1, i - 1).Resize(Selection.Rows.Count - 1, i).Value
End With
Next
End Sub

