【发布时间】:2018-05-21 16:02:40
【问题描述】:
我有一个包含多列数据的主工作表。 接下来我还从一个列表中创建了多个工作表。
现在,如果列中的值与所有工作表名称匹配,我想将主工作表中的行复制到相应的工作表,否则复制到“NA”工作表。
以前我只能想到硬编码,但这是不可行的,因为工作表的数量可能会增加到 50+,所以我需要一些帮助来解决这个问题..
'find rows of master sheet
With sh
LstR = .Cells(.Rows.Count, "C").End(xlUp).Row 'find last row of column C
Set rng = .Range("C3:C" & LstR) 'set range to loop
End With
'start the loop
'loop through, then loop through each C cell in template. if cell.value == worksheet name, copy to respective worksheet... elseif... else copy to NA
For Each c In rng.Cells
If c = "WEST" Then
c.EntireRow.Copy wsl1.Cells(wsl1.Rows.Count, "A").End(xlUp).Offset(1) 'copy row to first empty row in WEST
ElseIf c = "PKM" Then
c.EntireRow.Copy wsl2.Cells(wsl2.Rows.Count, "A").End(xlUp).Offset(1)
Else
c.EntireRow.Copy wsl7.Cells(wsl7.Rows.Count, "A").End(xlUp).Offset(1)
End If
Next c
感谢@user9770531,我能够为宏做我想做的事。
但是,现在我想让宏更加灵活。 例如,我在另一个工作表中有这个附加表 ColA_id 和 ColB_group
我不只是将检查工作表名称与 C 列中的值匹配,而是这样做: 如果主文件列 C 匹配“ColA_id”,则将数据复制到相应的“ColB_group”工作表。假设 ColB_group 已用于创建工作表名称。
【问题讨论】:
-
考虑为您的数据添加过滤器,循环工作表名称数组,过滤当前循环值(将是工作表名称)上感兴趣的列,将过滤后的数据复制到相应的工作表,清除过滤器,继续循环。
-
在这种情况下是否可以使用自动过滤器?