有没有办法在搜索之前使用Find
修剪搜索参数?
我有一个Excel文件,我想搜索一下,找到一个包含特定单词的单元格;每个单元格只包含一个单词。 Find
函数不区分大小写,并且在大多数情况下都非常有效。我发现的唯一(可能)缺陷是单元格必须只包含没有前导和尾随空格的单词。
例如:
如果我想使用Find
函数
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”等,但是如果它有一个前导或尾随空间,例如“声学”或“声学”,它将找不到它。
那么,在执行搜索之前,有没有办法(轻松)修剪单元格外的空格?或者我是否必须创建一个函数来遍历范围并首先修剪?
答案 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)
并被告知您应始终明确指定LookIn
,LookAt
,SearchOrder
和MatchByte
参数,否则Find()
将使用其最后设置如果来自Excel UI!
(我发现我的目的总是至少指定LookIn
和LookAt
个参数)