我正在使用高级过滤器并以部分匹配结束;但是,我需要匹配才能准确。始终从同一工作表上的B1:B3
中提取此过滤条件的条件。请帮我准确过滤。
以下是我正在使用的过滤器的代码:
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Final").Range("B5:B" & FinalRow).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("B1:B3"), Unique:=False
Range("B1").Select
结果如下:
标准仅包括DPB1 * 01:01:01,但在标准下方显示的过滤数据中也可以看到DPB1 * 04:01:01:01。
谢谢
答案 0 :(得分:0)
我发现唯一可以解决*
在任何搜索中都是通配符这一事实的方法是替换它们,过滤数据,然后将它们放回去。
将您的数据放在一张纸上,我称之为“数据”,从“A1”开始:
然后创建第二张纸,在其上粘贴已排序的数据:
然后在模块中添加以下代码:
Sub user5632387()
Application.EnableEvents = False
Dim dws As Worksheet
Dim sws As Worksheet
Dim finalRow As Long
Dim dataRng As Range
Dim critRng As Range
Dim CpyToRng As Range
Set dws = Worksheets("Data") ' Change to sheet with data
Set sws = Worksheets("Sort") ' Change to sheet on which to sort
With dws
finalRow = .Cells(Rows.count, 1).End(xlUp).Row
Set dataRng = .Range(.Cells(1, 1), .Cells(finalRow, 1).End(xlToRight))
End With
With sws
Set critRng = .Range(.Cells(1, 1), .Cells(1, 1).End(xlToRight).Offset(2))
Set CpyToRng = .Range(.Cells(5, 1), .Cells(5, 1).End(xlToRight))
End With
'change out all "*" for "|"
dataRng.Replace "~*", "|"
critRng.Replace "~*", "|"
'Filter
dataRng.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=critRng, CopyToRange:=CpyToRng, _
Unique:=False
'Replace "*"
critRng.Replace "|", Chr(42)
dataRng.Replace "|", Chr(42)
Range(CpyToRng, CpyToRng.End(xlDown)).Replace "|", Chr(42)
Application.EnableEvents = True
End Sub
您可以使用按钮调用此选项,或指定快捷键。它应该工作。
显然,如果在您的搜索区域中使用了|
,那么找一些不是外卡的其他角色,而不习惯成为临时占位符。