Excel 增加每次迭代的范围
我正在为我的工作自动化Excel表格,我陷入了一个问题 我试图复制一个特定的范围(A3:D3)并将其粘贴到另一个工作簿的结束行。我尝试使用if语句来过滤单元格B3中数字为0的范围 请帮忙。我是一个完全的新手,我才刚刚开始。如果有很多问题,我很抱歉 我尝试将范围更改为单元格(I,2),但它只复制B3,而不复制其余的单元格(A3:D3) 编辑:忘记在单元格中添加 Edit2:我只需要复制四个单元格(A3:D3),并在下一次迭代中增加它,以便复制的单元格为(A4:D4) 运行时错误“1004”: 对象“\u工作表”的方法“范围”失败 调试将突出显示wsCopy.range(单元格(i,2),单元格(i,4)).Copy,else之后的语句尝试使用以下代码:Excel 增加每次迭代的范围,excel,vba,Excel,Vba,我正在为我的工作自动化Excel表格,我陷入了一个问题 我试图复制一个特定的范围(A3:D3)并将其粘贴到另一个工作簿的结束行。我尝试使用if语句来过滤单元格B3中数字为0的范围 请帮忙。我是一个完全的新手,我才刚刚开始。如果有很多问题,我很抱歉 我尝试将范围更改为单元格(I,2),但它只复制B3,而不复制其余的单元格(A3:D3) 编辑:忘记在单元格中添加 Edit2:我只需要复制四个单元格(A3:D3),并在下一次迭代中增加它,以便复制的单元格为(A4:D4) 运行时错误“1004”: 对象
Sub CopyData()
Dim wsCopy As Worksheet, wsDest As Worksheet
Dim iCopyLastRow As Long, iDestLastRow As Long
Set wsCopy = Workbooks("file1.xlsx").Worksheets("trend")
Set wsDest = Workbooks("file2.xlsx").Worksheets("raw data")
iCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row
For i = 3 To iCopyLastRow
If wsCopy.Cells(i, 1).Value <> 0 Then
'A = 1, D = 4
wsCopy.Range(wsCopy.Cells(i, 1), wsCopy.Cells(i, 4)).Copy
iDestLastRow = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Offset(1).Row
wsDest.Range("A" & iDestLastRow).PasteSpecial xlPasteValues
End If
Next i
End Sub
Sub-CopyData()
将wsCopy设置为工作表,将wsDest设置为工作表
暗淡的图像与长的图像相同,理想的图像与长的图像相同
设置wsCopy=工作簿(“file1.xlsx”)。工作表(“趋势”)
设置wsDest=工作簿(“file2.xlsx”)。工作表(“原始数据”)
iCopyLastRow=wsCopy.Cells(wsCopy.Rows.Count,“A”).End(xlUp).Row
对于i=3至iCopyLastRow
如果wsCopy.Cells(i,1).Value为0,则
“A=1,D=4
范围(wsCopy.Cells(i,1),wsCopy.Cells(i,4)).Copy
iDestLastRow=wsDest.Cells(wsDest.Rows.Count,“B”)。End(xlUp)。Offset(1)。行
wsDest.Range(“A”&iDestLastRow).paste特殊XLPaste值
如果结束
接下来我
端接头
只需确保iCopyLastRow
和iDestLastRow
是您期望的值
我希望这有帮助。尝试下面的代码,它可以在循环中使用:
Sub CopyAndAppend()
Dim destSheet As Worksheet, srcSheet As Worksheet, lastRow As Long
Set destSheet = Worksheets("Sheet2")
Set srcSheet = Worksheets("Sheet1")
' determine last row in Sheet2
lastRow = destSheet.Cells(destSheet.Rows.Count, 1).End(xlUp).Row
Dim i As Long
i = 3
' copy range A3:D3 and paste it right after last row in Sheet2
srcSheet.Range(srcSheet.Cells(i, 1), srcSheet.Cells(i, 4)).Copy destSheet.Cells(lastRow + 1, 1)
' increment row index
i = i + 1
' do something else
End Sub
可能重复的更改:
wsCopy.range(单元格(i,2),单元格(i,4)).Copy
For:wsCopy.range(wsCopy.Cells(i,2),wsCopy.Cells(i,4)).Copy
您在单元格中遗漏了一个s
,而且您甚至需要在那里对范围进行完全验证。嘿,达米安,谢谢!我忘了在我的帖子中添加s。使用正确的语法,我仍然会得到相同的错误。嗨,路易斯,谢谢你的回复!我忘了在我的帖子中添加s,但它仍然会给我同样的错误。是的,就是这样。谢谢谢谢你,迈克!我一会儿就试试这个。代码看起来更整洁!我会让你知道它是否有效。但我想弄明白为什么我的代码不起作用。也可能我只是需要离开这里。我一会儿就回来
Sub CopyAndAppend()
Dim destSheet As Worksheet, srcSheet As Worksheet, lastRow As Long
Set destSheet = Worksheets("Sheet2")
Set srcSheet = Worksheets("Sheet1")
' determine last row in Sheet2
lastRow = destSheet.Cells(destSheet.Rows.Count, 1).End(xlUp).Row
Dim i As Long
i = 3
' copy range A3:D3 and paste it right after last row in Sheet2
srcSheet.Range(srcSheet.Cells(i, 1), srcSheet.Cells(i, 4)).Copy destSheet.Cells(lastRow + 1, 1)
' increment row index
i = i + 1
' do something else
End Sub