【发布时间】:2022-03-06 17:55:23
【问题描述】:
我有以下代码,可以很好地将相关数据复制到我的工作表中。我为 J 列中的每个唯一部门手动创建每个工作表,然后运行此宏。我想要一个宏,它可以根据 J 列中的唯一值动态创建工作表。我在网上找到了很好的资源,但是当它到达已经为其创建工作表的行时,我发现的那些似乎出错了。在手动创建其他工作表之前,我已经包含了我当前使用的代码以及库存表的屏幕截图
Sub CopyRows()
Dim bottomJ As Integer
bottomJ = Range("J" & Rows.Count).End(xlUp).Row
Dim c As Range
Dim ws As Worksheet
For Each c In Sheets("All Dept.").Range("J2:J" & bottomJ)
For Each ws In Sheets
ws.Activate
If ws.Name = c Then
c.EntireRow.Copy Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
Next ws
Next c
End Sub
【问题讨论】:
-
你得到了什么错误,代码的哪一行?
-
您是说对于工作表
All Dept.的J列中的每个唯一值,您要创建一个包含相同表但仅包含相关数据的新工作表?要将这些工作表复制到现有工作簿还是新工作簿?如果以前存在任何工作表,是否应该将其删除然后重新创建,或者清除其内容然后复制可能不同的内容或什么?请更具体,并在您的帖子中添加更多详细信息。 -
您的代码假定您需要逐行分隔数据,但为什么不利用 Excel 已经提供的功能呢?您可以将整个表格复制到每个工作表,然后过滤并删除每个工作表的隐藏。这可能会减少大量的工作量。
-
是的,这就是我要说的。对于工作表所有部门 J 列中的每个唯一值,我最终会得到 4 张新工作表。所以对于上面的截图,我会以 4 个空白工作表结束。这 4 个空白工作表将被命名为“500 - NETWORK OPERATIONS”、“100 - CUSTOMER SERVICE”、“300 - ADMIN”和“700-ENGINEERING”。
-
嘿西里尔,我认为该方法也可以工作并且会更快,但我仍然需要一种方法来动态创建工作表/将它们重命名为 J 列中的每个唯一值。跨度>
标签: excel vba autofilter