我是VBA的新手需要一些关于代码的帮助。
我有一个包含数千行的大型电子表格,每行有一个unique_ID,问题答案为7到65。我需要按id拆分这些行,这样每行都有ID,问题编号和数字值(问题答案)。
原始数据如下所示:
我找到了一个帮助我在此页面上拆分行的VBA代码: Split a row into several, with an identifier
这是我正在使用的代码:
Sub NewLayout()
For i = 2 To Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
For j = 0 To Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
If Cells(i, 13 + j) <> vbNullString Then
intCount = intCount + 1
Cells(i, 1).Copy Destination:=Cells(intCount, 30)
Cells(i, 2 + j).Copy Destination:=Cells(intCount, 31)
Cells(i, 13 + j).Copy Destination:=Cells(intCount, 32)
End If
Next j
Next i
End Sub
代码似乎有效,但我的输出有问题:它返回一些额外的数据,我不知道代码中的错误在哪里以及如何摆脱它。
附上输出示例。
非常感谢任何帮助!
答案 0 :(得分:0)
试一试,
Sub NewLayout()
with worksheets("sheet1")
For i = 2 To .Cells(.rows.count, "A").end(xlup).Row
For j = 0 To .Cells(i, 29).end(xltoleft).Column
.cells(.rows.count, "AD").end(xlup).offset(1,0) = .cells(i, "A").value
.cells(.rows.count, "AD").end(xlup).offset(0,1) = .cells(1, j).value
.cells(.rows.count, "AD").end(xlup).offset(1,0) = .cells(i, j).value
Next j
Next i
end with
End Sub
您在嵌套For ... Next中重新评估终止j
,同时您将值写入AD:AF列。您可以考虑写入另一个工作表或低于现有数据而不是右侧。