在Sheet1中查找单元格,然后复制它到Sheet2中第一个空行的整个行
我在下面的行中收到一个“下标超出范围”:表格(“Sheet1”)。单元格(“A”,i).EntireRow.Copy。 如何将行复制并粘贴到Sheet2中的第一个打开的行。
Sub IDwalkups() Dim endRow As Long Dim Match1() As Variant Dim ws As Worksheet Set ws = Worksheets("Sheet1") ICount = 0 endRow = Sheet1.Range("B999999").End(xlUp).Row Match1 = Sheet1.Range("E3:E" & endRow) For i = LBound(Match1) To UBound(Match1) If Match1(i, 1) = "W" Then Sheets(“Sheet1”).Cells("A", i).EntireRow.Copy Destination:=Sheets (“Sheet2”).Range(“A” & Rows.Count).End(xlUp).Offset(1) Else End If Next i End Sub
你有三个错误是:
- 使用
“
和”
而不是"
例如“Sheet1”
是一个有效的variables名 ,可以用在“Sheet1” = 5 * 2
语句中,从句法上来说,与"Sheet1"
是一个string。 - 使用
Cells("A", i)
而不是Cells(i, "A")
–Cells
的第一个参数是行,第二个参数是列。 - 在使用
Rows.Count
时不符合您所指的是哪个表单(但是很可能无论如何都会起作用)
所以
Sheets(“Sheet1”).Cells("A", i).EntireRow.Copy Destination:=Sheets (“Sheet2”).Range(“A” & Rows.Count).End(xlUp).Offset(1)
本来应该
Sheets("Sheet1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Sheets("Sheet2").Rows.Count).End(xlUp).Offset(1)
我看到2个错误。 首先复制和粘贴是两个步骤(2个命令)。 其次,如果使用Cells
,则必须将行和列作为数字参数。 您必须将其更改为Range
。
If Match1(i, 1) = "W" Then Dim sourceRange As Range, destRange As Range Set sourceRange = ws.Range("A" & i).EntireRow ' or Set sourceRange = ws.Cells(i, 1).EntireRow sourceRange.Copy Set destRange = Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1) destRange.PasteSpecial End If