我是Visual Basic的新手,我正在尝试创建一个宏,它将获取我的Excel工作表并将其规范化。以下是我的数据示例:
The full data spans around 200 columns and nearly 50,000 rows.
这就是我希望我的数据最终看起来的方式:
我在网上发现了一些代码,但其中一行有错误,我无法弄清楚是什么问题。这是代码:
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年开始的,所以一段时间过去了。如何解决这个问题的任何帮助将不胜感激!