将宽数据更改回长格式 - VBA.如何选择工作表



我一直在寻找一种宽到长格式的代码,并在这里发现了一些非常有用的东西。我已经接受了它并对其进行了一些修改以应用于我的数据......完美工作。

我的问题是,我在哪里添加工作表选择? 即我希望能够从不同页面上的按钮运行宏。目前,代码仅在从原始源表执行时才有效。

Sub Wide_To_Long()
Dim Rng As Range, Dn As Range, Dta, col As Integer
Dim c As Integer, LastDt As Integer, LastVis As Integer
 LastDt = Cells("1", Columns.Count).End(xlToLeft).Column
Set Rng = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
ReDim Ray(1 To Rng.Count * LastDt, 1 To LastDt)
For Each Dn In Rng
  LastVis = Cells(Dn.Row, Columns.Count).End(xlToLeft).Column
      For col = 8 To LastVis
        c = c + 1
            For Dta = 0 To 8
                Select Case Dta
                    Case Is = 7
                    Ray(c, Dta + 1) = Cells(1, col)
                    Case Is = 8
                    Ray(c, Dta + 1) = Dn.Offset(, col - 1)
                    Case Else
                    Ray(c, Dta + 1) = Dn.Offset(, Dta)
                End Select
            Next Dta
    Next col
Next Dn
Sheets("Sheet2").Range("A2").Resize(c, LastDt).Value = Ray
End Sub

可能有一个更好的做法(如果来自 Lowpar 知道在哪里进行更改(,但我发现在第一次变暗之前插入 sheets("(。选择数据响的工作表工作正常。

最新更新