首页 文章

在Sheet1中找到一个单元格然后将它所在的整行复制到Sheet2中的第一个空行

提问于
浏览
0

我在行开始时收到“下标超出范围”:Sheets(“Sheet1”) . Cells(“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

2 回答

  • 1

    你遇到的三个错误是:

    • 使用 而不是 " . 例如, “Sheet1” 是有效的 variable name ,可以在 “Sheet1” = 5 * 2 等语句中使用 . 从语法上讲,它与 "Sheet1" 完全不同,后者是一个字符串文字 .

    • 使用 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)
    
  • 1

    我看到2个错误 . 首先,复制和粘贴是两个步骤(2个命令) . 其次,如果使用 Cells ,则必须将行和列指定为Number-Parameter . 你必须将它改为 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
    

相关问题