所以我根据导入的包含名称的列表过滤工作表。在导入名称列表中的名称是Williams。当我做过滤器时,它不仅返回威廉姆斯,还返回威廉森和威廉姆森。我怎么阻止它?我需要完全匹配。这是我的代码:
With Sheets("Sheet1")
LastRow = .Range("D" & .Rows.Count).End(xlUp).Row
End With
Range("D17:D" & LastRow).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("J1:J16"), Unique:=False
答案 0 :(得分:0)
这种情况正在发生,因为Excel会使用全能*通配符填充搜索字词的末尾,这意味着您无法获得精确搜索。有两种方法可以让Excel进行精确搜索。
方法一: 首先,在标准条款前面加上等号。例如迈克尔威廉姆斯。请注意,您无法直接在单元格中键入 ,因为Excel当然认为以等号开头的任何内容都是公式,因此尝试将其作为公式进行评估,然后您得到一个#NAME?错误。因此,您需要在其前面加上'撇号字符(告诉Excel不要尝试解释公式,即' = Michael Williams)或者你需要编写一个公式,在评估时将= Michael Willams作为文本返回(通过使用通用公式模式=" = Michael Williams")。
方法二 用尾随空格填写原始姓氏列表,以便" Williams"成为"威廉姆斯"和#34;威廉森"变成"威廉森"。然后填写搜索字词。之后," Williams"不符合" Williamsen"等条款。
这里展示了这一点。首先,让我们尝试没有填充:
如下所示,这与威廉姆斯和威廉姆森的错误匹配:
现在,让我们在使用空格填充过滤条件和数据后尝试它。 (请注意,在下面的屏幕截图中,我在开头两处添加了一个空格。这实际上并不是必需的):
正如你所看到的,这次它运作得很好: