【发布时间】:2018-11-13 03:08:14
【问题描述】:
我正在尝试将 auto-copy rows 从主 worksheet 转换为单独的 worksheet。当在 Master sheet 中将特定值输入到 Column B 时,会发生这种情况。例如。如果 ABC 在 Master 中输入 Column B,这些 rows 将自动复制到名为 ABC 的单独工作表中。
问题是我有其他值要复制到其他工作表中。例如,如果在 Master 的 B 列中输入了 DEF,则自动复制到名为 DEF 的单独工作表中。我不知道该怎么做。
当Change 输入Column B 时,下面的代码会自动复制所有行。这工作正常,但我还想添加另一个函数,当输入“延迟”时,copies all rows。
Sub FilterAndCopy()
Dim rng As Range, sht1 As Worksheet, sht2 As Worksheet
Set sht1 = Worksheets("Master")
Set sht2 = Worksheets("Change")
sht2.UsedRange.ClearContents
With Intersect(sht1.Columns("B:BP"), sht1.UsedRange)
.Cells.EntireColumn.Hidden = False ' unhide columns
If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
.AutoFilter field:=1, Criteria1:="Change"
.Range("A:F, BL:BO").Copy Destination:=sht2.Cells(4, "B")
.Parent.AutoFilterMode = False
.Range("H:BK").EntireColumn.Hidden = True ' hide columns
End With
End Sub
该代码只是将更改行从主表复制到更改表。
但是我想添加另一个函数,将延迟行从主表复制到延迟表。我只是不确定这是否可以合并到上面的代码中?或者,如果我可以做到以下几点:
Sub FilterAndCopy()
Dim rng As Range, sht1 As Worksheet, sht3 As Worksheet
Set sht1 = Worksheets("Master")
Set sht3 = Worksheets("Delay")
sht3.UsedRange.ClearContents
With Intersect(sht1.Columns("B:BP"), sht1.UsedRange)
.Cells.EntireColumn.Hidden = False ' unhide columns
If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
.AutoFilter field:=1, Criteria1:="Delay"
.Range("A:B, BJ:BO").Copy Destination:=sht2.Cells(4, "B")
.Parent.AutoFilterMode = False
.Range("D:BI").EntireColumn.Hidden = True ' hide columns
End With
End Sub
请注意: 必须在不运行脚本的情况下触发此宏。
【问题讨论】:
-
查看编辑,我的测试文件一切正常。
-
感谢您的帮助@O.PAL,但这不会复制“所有”行。宏也没有触发。