我有一个 Headers 为 Task List 的主页,其中包含行列表,我需要根据 Column I 中单元格的内容将每行复制到特定的表格中 . 还有四个其他工作表( Headers 为 Admin , Engine , Lab 和 RD ),其中需要将这些值复制到,具体取决于 Column I 中的值 . 此外,还有一个名为 Completed 的单独工作表,其中行应移至(不复制),其中包含 Headers 为 Task List 的工作表的 Column E 中的单词"Complete" .
下面是我目前从我发现的帖子中获取的代码 . 当我运行它时,它当前没有复制任何东西 . 任何人都可以建议新的代码或修改吗?
Sub copyRows()
Set a = Sheets("Task List")
Set b = Sheets("Admin")
Set c = Sheets("Engine")
Set d = Sheets("Lab")
Set e = Sheets("RD")
Set f = Sheets("Completed")
Dim t
Dim u
Dim v
Dim w
Dim y As Long
Dim z
t = 2
u = 2
v = 2
w = 2
z = 3
Do Until IsEmpty(a.Range("I" & z))
If a.Range("I" & z) = "Admin" Then
t = t + 1
b.Rows(t).Value = a.Rows(z).Value
End If
If a.Range("I" & z) = "Engine" Then
u = u + 1
c.Rows(u).Value = a.Rows(z).Value
End If
If a.Range("I" & z) = "Lab" Then
v = v + 1
d.Rows(v).Value = a.Rows(z).Value
End If
If a.Range("I" & z) = "RD" Then
w = w + 1
e.Rows(w).Value = a.Rows(z).Value
End If
If a.Range("E" & z) = "COMPLETE" Then
y = f.Range("a" & Rows.Count).End(xlUp).Row + 1
f.Rows(y).Value = a.Rows(z).Value
a.Rows(z).Delete
z = z - 1
End If
z = z + 1
Loop
End Sub
2 回答
我认为循环不能正常工作 . 试试这段代码:
尝试使用
AutoFilter
方法,在处理大型数据集时,您会发现它更短,速度更快 .Note :将
Set FilterRng = a.Range(a.Range("I3"), a.Range("I3").End(xlDown))
修改为数据所在的列 .