【问题标题】:Move rows to another sheet if meeting criteria如果满足条件,将行移动到另一个工作表
【发布时间】:2015-12-30 18:11:31
【问题描述】:

如果单元格等于迪斯尼奥兰多,我想移动到新的工作表或全新的工作表。截至目前 .Rows 导致错误。

Sub finddisneys()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim wb As Workbook
Dim ws As Worksheet


Set wb = ActiveWorkbook
Set ws1 = wb.Sheets("April")
Set ws2 = wb.Sheets("alljobs")
Set ws3 = wb.Sheets("New")


i = ws1.Cells(Rows.Count, 2).End(xlUp).Row
For i = z To 2 Step -1
    If ws1.Cells(i, 2) = "Disney Orlando" Then
        .Rows(i).Copy Destination:=ws3.range("A")
    End If

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

【问题讨论】:

  • 除非在 With 块内,否则不能在参数前加上 .。所以把ws1.Rows(i).Copy Destination:=ws3.range("A2")
  • 你的行 `i = ws1.Cells(Rows.Count, 2).End(xlUp).Row` 需要是 `z = ws1.Cells(Rows.Count, 2).End (xlUp).Row`
  • 您缺少Next i
  • (...并将整个东西切换到AutoFilter method
  • 这只会捕获、复制和粘贴一行。如何更改目标更改以使用 for 循环滚动?

标签: vba excel copy paste


【解决方案1】:

只需要对代码做一些“家务”:

Sub finddisneys()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim wb As Workbook
Dim ws As Worksheet


Set wb = ActiveWorkbook
Set ws1 = wb.Sheets("April")
Set ws2 = wb.Sheets("alljobs")
Set WS3 = wb.Sheets("New")


i = ws1.Cells(ws1.Rows.Count, 2).End(xlUp).row ' Added ws1 before "Rows" for clarity
For i = z To 2 Step -1
    If ws1.Cells(i, 2) = "Disney Orlando" Then
        ws1.Rows(i).copy Destination:=WS3.Range("A") ' Added ws1, since you didn't have `With` anywhere.
    End If
Next i ' Need this to continue the loop

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

编辑:啊,我看到 Scott 和 Jeeped 都在上面。

【讨论】:

  • 由于只有一个(错误的)目的地,您可能希望在遇到第一场比赛后Exit For,或者将目的地更改为新位置,例如下一个空行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多