【问题标题】:Find A Cell In Sheet1 Then Copy The Entire Row That It Is In To The First Empty Row in Sheet2在 Sheet1 中找到一个单元格,然后将其所在的整个行复制到 Sheet2 中的第一个空行
【发布时间】:2023-03-21 14:01:01
【问题描述】:

我在以下行开始收到“下标超出范围”: 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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你遇到的三个错误是:

    • 使用 而不是"。例如,“Sheet1” 是一个有效的变量名,可以在诸如“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)
    

    【讨论】:

      【解决方案2】:

      我看到 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
      

      【讨论】:

      • Cells("A", i) 不正确,但Cells(i, "A") 可以 - 该列不需要是数字,它可以是字符串
      • 嘿 YowE3K,我多年来一直在使用 VBA,并且一直使用 .Cells,但从未意识到这一点。
      • 大约 10 个月前我开始在 SO 上闲逛时才知道这一点,我想我从 VBA 刚问世以来就一直在使用它!
      • 哦 - 复制/粘贴不必是两个操作 - OP做的很好,所以两个错误是不正确的引号,以及@987654327中的行/列切换@
      • @FunThomas 你的答案都有效。非常感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2022-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多