使用查找

时间:2017-02-18 15:00:03

标签: excel vba find

有没有办法在搜索之前使用Find修剪搜索参数?

我有一个Excel文件,我想搜索一下,找到一个包含特定单词的单元格;每个单元格只包含一个单词。 Find函数不区分大小写,并且在大多数情况下都非常有效。我发现的唯一(可能)缺陷是单元格必须只包含没有前导和尾随空格的单词。

例如: 如果我想使用Find函数

搜索单词acoustic
Dim rng as Range
rng = ActiveSheet.Range("A1:K100")
Set foundItem = rng.Find("acoustic")
if not foundItem Is Nothing Then MsgBox foundItem.Address

这会在很多变化中找到这个词 - “Acoustic”,“aCOUstic”,“acoustic”等,但是如果它有一个前导或尾随空间,例如“声学”或“声学”,它将找不到它。

那么,在执行搜索之前,有没有办法(轻松)修剪单元格外的空格?或者我是否必须创建一个函数来遍历范围并首先修剪?

2 个答案:

答案 0 :(得分:0)

您可以在找到之前修剪范围:

rng.value = Application.Trim(rng.value)

或者如果范围包含公式并且您想要保留它们:

rng.Formula = Application.Trim(rng.Formula)

答案 1 :(得分:0)

只需将LookAt方法的Find()参数设置为xlPart

即可
Set foundItem = rng.Find(What:="acoustic", LookIn:=xlValues, lookat:=xlPart, MatchCase=False) 

您也可以在公式中进行相同的搜索:

Set foundItem = rng.Find(What:="acoustic", LookIn:=xlFormulas, lookat:=xlPart, MatchCase=False) 

并被告知您应始终明确指定LookInLookAtSearchOrderMatchByte参数,否则Find()将使用其最后设置如果来自Excel UI! (我发现我的目的总是至少指定LookInLookAt个参数)