【发布时间】:2017-03-10 22:18:48
【问题描述】:
我有一个工作表“列表”,其中包含需要复制到其他工作表的数据行。在“列表”的“J”列中,有一个名称(Matthew、Mark、Linda 等)指定该行的数据是谁。
这些名称中的每一个(总共 22 个)都有一个同名的匹配电子表格。我希望在“J”列中显示“Linda”的所有行都粘贴到工作表“Linda”,所有带有“Matthew”的行都粘贴到工作表“Matthew”等。
我在下面有一些代码,大部分都有效,但我必须为所有 22 个名称/工作表重写它。
有没有办法遍历所有工作表,粘贴具有匹配名称的行?此外,下面的代码运行速度非常慢,我正在使用需要排序和粘贴的 200 到 60,000 行的数据集,这意味着如果它在我目前正在处理的小型数据集上运行缓慢,而且只有一张纸,对于大数据集来说,它会非常缓慢。
Sub CopyMatch()
Dim c As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet
Set Source = Worksheets("List")
Set Target = Worksheets("Linda")
j = 4 ' Start copying to row 1 in target sheet
For Each c In Source.Range("J4:J1000") ' Do 1000 rows
If c = "Linda" Then
Source.Rows(c.Row).Copy Target.Rows(j)
j = j + 1
End If
Next c
End Sub
【问题讨论】:
-
您可以在每个工作表上运行过滤器,在“Linda”的 J 列中,而不是循环遍历每个单元格,然后复制/粘贴可见单元格。
-
我可以这样做,但每次我必须做这些报告时,我都必须这样做 22 次,这很常见。如果我可以为它写一个宏,它每周可以为我节省不少时间。