我得到错误9下标超出范围。如果i和ii都显示3,那么打印该值,这是数据应该从哪一行开始。我能想到的最好的是它无法从prev报告中读取数据,这与upt报告相同
For i = 3 To lastRowReport
For ii = 3 To lastRowPrev
If Worksheets("UPT Report").Cells(i, 1).Value = Worksheets("UPT Prev").Cells(ii, 1)
Then
Worksheets("UPT Prev").Range(Cells(ii, 1), Cells(ii, 22)).Value =
Worksheets("UPT Report").Range(Cells(i, 1), Cells(i, 22)).Value
Else
Worksheets("UPT Report").Range(Cells(i, 1), Cells(i, 22)).Copy
Worksheets("UPT Prev").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PastSpecial xlPasteValues
End If
Next ii
Next i
调整代码后
lastblankrow = lastRowPrev + 1
For i = 3 To lastRowReport
For ii = 3 To lastRowPrev
If Worksheets("UPT Report").Cells(i, 1).Value = Worksheets("UPT Prev").Cells(ii, 1).Value Then
Worksheets("UPT Prev").Range(Worksheets("UPT Prev").Cells(ii, 1), Worksheets("UPT Prev").Cells(ii, 22)).Value = _
Worksheets("UPT Report").Range(Worksheets("UPT Report").Cells(i, 1), Worksheets("UPT Report").Cells(i, 22)).Value
Else
Worksheets("UPT Prev").Range(Worksheets("UPT Prev").Cells(lastblankrow, 1), Worksheets("UPT Prev").Cells(lastblankrow, 22)).Value = _
Worksheets("UPT Report").Range(Worksheets("UPT Report").Cells(i, 1), Worksheets("UPT Report").Cells(i, 22)).Value
lastblankrow = lastblankrow + 1
End If
下一步ii 接下来我
它现在正在移动数据,但将线路加倍。
因此每行应添加2行,应为1
当前添加的是什么,在宏运行之前前两行已经到位
1 Test Test Mgr -12 Test 1
2 Test Test Mgr -13 Test 1
1 Test Test Mgr -12 Test 1
2 Test Test Mgr -13 Test 1
3 Test Test Mgr -12 #N/A
3 Test Test Mgr -12 #N/A
4 Test Test Mgr -12 #N/A
4 Test Test Mgr -12 #N/A
5 Test Test Mgr -12 #N/A
5 Test Test Mgr -12 #N/A
6 Test Test Mgr -12 #N/A
6 Test Test Mgr -12 #N/A
7 Test Test Mgr -12 #N/A
7 Test Test Mgr -12 #N/A
8 Test Test Mgr -12 #N/A
8 Test Test Mgr -12 #N/A
9 Test Test Mgr -12 #N/A
9 Test Test Mgr -12 #N/A
10 Test Test Mgr -12 #N/A
10 Test Test Mgr -12 #N/A
12 Phil Zkim 12 #N/A
12 Phil Zkim 12 #N/A
答案 0 :(得分:0)
这是如何运作的?
Sub t()
For i = 3 To lastRowReport
For ii = 3 To lastRowPrev
If Worksheets("UPT Report").Cells(i, 1).Value = Worksheets("UPT Prev").Cells(ii, 1) Then
Worksheets("UPT Prev").Range(Worksheets("UPT Prev").Cells(ii, 1), Worksheets("UPT Prev").Cells(ii, 22)).Value = _
Worksheets("UPT Report").Range(Worksheets("UPT Report").Cells(i, 1), Worksheets("UPT Report").Cells(i, 22)).Value
Else
Worksheets("UPT Report").Range(Worksheets("UPT Report").Cells(i, 1), Worksheets("UPT Report").Cells(i, 22)).Copy
Worksheets("UPT Prev").Cells(Worksheets("UPT Prev").Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next ii
Next i
End Sub
基本上,我只是使用工作表(我假设)对所有Cells()
和Rows.Count
进行了限定,应该从中调用它。你在PastSpecial
中也有一个拼写错误。
此外,在将命令分成两行时,您需要像我在第一个_
语句中那样“连接”然后使用If
。
如果您想使用With Worksheets("UPT Report")
并将两个范围的值设置为相等(而不是复制/粘贴特殊值),这可以稍微整理一下,但我会将其作为练习读者。