我是VBA的新手。我有一些代码会将一张表中满足特定条件的数据复制到另一张主表中。我还有其他多个工作表要复制到母版中。我该如何修改我的代码?
谢谢。
Sub copyPaste()
Dim ws As Worksheet
Dim wt As Worksheet
Set ws = Sheets("S_Q")
Set wt = Sheets("master")
Dim i As Integer
Dim lr As Integer
lr = ws.Range("y" & Rows.Count).End(xlUp).Row
Dim lt As Long
For i = 1 To lr
lt = wt.Range("y" & Rows.Count).End(xlUp).Row
If ws.Range("bz" & i) > 14 Then
ws.Range("y" & i).EntireRow.Copy wt.Range("a" & lt + 1)
End If
Next i
End Sub
答案 0 :(得分:0)
在不深入探讨代码本身细节的情况下-您要对其运行所有工作表的条件是否相同?所有这些工作表中的数据布局都是吗?
如果是这样,并且如果您当前的代码正在执行工作表A所需的工作,而我们只需要扩展它以处理工作表B到X,那么您就可以摆脱暗淡/设置的ws行,而是将第一行更改为
sub copyPaste(ws as worksheet)
这将使您可以使用单独的过程为每个需要在其上运行的工作表调用此过程。下面是使用原始代码中的工作表的示例:
call copyPaste(ThisWorkbook.Sheets("S_Q"))
答案 1 :(得分:0)
我将感兴趣的工作表循环成一个数组并对其进行循环。我还可以使用Union来收集排位赛范围,然后粘贴一次以提高效率。
我还将使用辅助函数来检索最后一行,并在其中添加一行以获得下一行。
另外,使用somethingElse
而不是Long
以避免潜在的溢出,因为工作表中的行数超出了Integer的处理能力。
Integer
答案 2 :(得分:0)
在各种列上尝试使用过滤器后,它在某些列而不是其他列上起作用;没有明显的理由。我决定重新调整电子表格并将要过滤的列放在第一列中。到目前为止,这似乎一直有效。