麻烦.Resize和UBound函数(Visual Basic)

时间:2017-07-27 16:32:10

标签: excel vba excel-vba normalize

我是Visual Basic的新手,我正在尝试创建一个宏,它将获取我的Excel工作表并将其规范化。以下是我的数据示例:

The full data spans around 200 columns and nearly 50,000 rows.

这就是我希望我的数据最终看起来的方式:

Normalized data

我在网上发现了一些代码,但其中一行有错误,我无法弄清楚是什么问题。这是代码:

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年开始的,所以一段时间过去了。如何解决这个问题的任何帮助将不胜感激!

0 个答案:

没有答案