与.Resize和UBound函数(Visual Basic)

我完全不熟悉Visual Basic,并试图创build一个将使用我的Excel工作表并将其规范化的macros。 以下是我的数据示例:

完整的数据跨越200列和近5万行。

这就是我最终希望我的数据看起来如何:

规范化的数据

我在网上find一些代码来做到这一点,但其中一行有一个错误,我不知道有什么问题。 这里是代码:

Sub TransposeRows() Dim vIn, i As Long, j As Long, vOut, lngCnt As Long Dim lngLastRow As Long, lngLastCol As Long, vFirstRow lngLastRow = Cells(Rows.Count, 1).End(xlUp).Row lngLastCol = Cells(1, Columns.Count).End(xlToLeft).Column vFirstRow = Range("A2", Cells(1, lngLastCol)).Value vIn = Range("A2", Cells(lngLastRow, lngLastCol)).Value ReDim vOut(1 To (lngLastCol - 1) * UBound(vIn, 1), 1 To 3) For i = 1 To UBound(vIn, 1) For j = 2 To lngLastCol lngCnt = lngCnt + 1 vOut(lngCnt, 1) = vIn(i, 1) vOut(lngCnt, 2) = vFirstRow(1, j) vOut(lngCnt, 3) = vIn(i, j) Next j Next i With Worksheets.Add .Range("A1:C1").Value = Array("ID", "AmtID", "Value") .Range("A2").Resize(UBound(vOut, 1), 3).Value = vOut End With End Sub 

Excel告诉我问题是在底部的第三个.Range线,我相信明确的东西是错误的.Resize函数和UBound函数。 当我运行它时,Excel会告诉我有一个“运行时错误”1004“:应用程序定义或对象定义的错误”

我发现这个代码是从2008年开始的,所以过了一段时间。 任何帮助如何解决这个将不胜感激!