Excel 筛选精确匹配并从范围中提取条件
我使用了一个高级过滤器,结果是部分匹配;但是,我需要精确匹配。此筛选器的条件始终从同一工作表上的Excel 筛选精确匹配并从范围中提取条件,excel,vba,Excel,Vba,我使用了一个高级过滤器,结果是部分匹配;但是,我需要精确匹配。此筛选器的条件始终从同一工作表上的B1:B3中提取。请帮我把过滤器弄准确 下面是我正在使用的过滤器的代码: FinalRow = Cells(Rows.Count, 1).End(xlUp).Row Sheets("Final").Range("B5:B" & FinalRow).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
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在标准下方显示的过滤数据中也可见
谢谢你我发现,在任何搜索中,
*
都是一个通配符,唯一的办法就是替换它们,过滤数据,然后放回原处
把你的数据放在一张纸上,我把我的称为“数据”,从“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
您可以通过按钮调用此功能,或指定快捷键。它应该会起作用
显然,如果搜索区域中使用了
|
,则可以查找其他非通配符且不曾作为临时占位符的字符。尝试在值前面使用=
设置条件:'=DPB1*01:01:01
。问题是精彩的*
。它是一个通配符,将查找任何内容,以便您的*04:
计数。抱歉,这似乎没有帮助。我得到了同样的结果。@user3781528您如何调用放置此代码的子节点?我刚刚再次测试了它,它成功了。@user3781528我做了一些编辑。我发现了一些错误。请试用。为什么要将筛选后的数据复制到新工作表?我还没有尝试您的更新代码,但以前的代码在个人工作簿中有效,但当它移动到我的项目为DPB1的工作簿中时*04:01:01:01未被过滤掉。这很奇怪。我也尝试过启用事件,但没有帮助。如果可能的话,我想避免使用多张纸来完成这项工作?