如果列E =“ Y”中的一个单元格,那么我想将该单元格的整个行复制到工作表2中,并对工作簿中除工作表2之外的每个工作表执行此操作。
这是我尝试过的代码。
Sub Macro1()
Dim lastrow As Long
Dim cpyrow As String
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Sheet2" Then
For Each cell In Range("E:E")
If cell.Value = "Y" Then
lastrow = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row + 1
cpyrow = cell.Row & ":" & cell.Row
ws.Range(cpyrow).Copy Destination:=Sheets("Sheet2").Range("A" & lastrow)
End If
Next cell
End If
Next ws
End Sub
有时它将复制正确的行,但是有时它将复制其列E中的单元格不等于“ Y”的行,否则将跳过这样做的行。另外,当我在不同的图纸上运行它时,为什么它会给出不同的结果?它不应该以相同的方式运行并遍历每个工作表吗?
答案 0 :(得分:1)
您错过了循环中的父工作表引用:
For Each cell In Range("E:E")
应该是
For Each cell In ws.Range("E:E")
否则,您将测试活动工作表,但在该行上复制正确的工作表。
答案 1 :(得分:1)
替换:
For Each cell In Range("E:E")
具有:
For Each cell In ws.Range("E:E")
(可能还有其他错误)