将宽数据更改回长格式 - VBA。如何选择表?

时间:2017-04-07 07:10:53

标签: excel vba excel-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

1 个答案:

答案 0 :(得分:0)

可能有更好的做法(如果来自Lowpar知道在哪里进行更改),但我发现在第一次调暗之前插入一张纸("")。选择到纸张工作得很好。