在当前工作表列A中有一系列数据,用户在单元格C2中输入值,将列A中包含单元格C2的值的数据复制到列E中,如下图1所示。
图1
可以使用下面的程序:
Sub GetSpecialValue()
With ActiveSheet
.Range("E2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).Clear
.Range("A1").AutoFilter Field:=1, Criteria1:="=*" & .Range("C2").Value & "*", Operator:=xlAnd
.Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy
.Range("E2").PasteSpecial
.AutoFilterMode = False
.Range("C2").Select
End With
Application.CutCopyMode = False
End Sub
如果想要去掉筛选结果中的重复值,可以在程序中添加一条语句:
.Range("E2").RemoveDuplicates Columns:=1, Header:=xlNo
完整的程序代码如下:
Sub GetSpecialValue()
With ActiveSheet
.Range("E2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).Clear
.Range("A1").AutoFilter Field:=1, Criteria1:="=*" & .Range("C2").Value & "*", Operator:=xlAnd
.Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy
.Range("E2").PasteSpecial
.AutoFilterMode = False
.Range("E2").RemoveDuplicates Columns:=1, Header:=xlNo
.Range("C2").Select
End With
Application.CutCopyMode = False
End Sub
结果如下图2所示。
图2
技术交流,软件开发,欢迎微信沟通: