Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用“查找”进行搜索前修剪搜索参数_Excel_Vba_Find - Fatal编程技术网

Excel 使用“查找”进行搜索前修剪搜索参数

Excel 使用“查找”进行搜索前修剪搜索参数,excel,vba,find,Excel,Vba,Find,在搜索之前,是否有方法使用Find修剪搜索参数 我有一个Excel文件,我想在其中搜索,以找到包含特定单词的单元格;每个单元格只包含一个单词。Find函数不区分大小写,在大多数情况下都能完美工作。我发现的唯一(可能)缺陷是单元格必须只包含单词,而不包含前导和尾随空格 例如: 如果我想使用Find功能搜索单词acoustic Dim rng as Range rng = ActiveSheet.Range("A1:K100") Set foundItem = rng.Find("acoustic"

在搜索之前,是否有方法使用
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
这个词有很多变体——“声学”、“声学”、“声学”等,但如果它有前导或尾随空格,例如“声学”或“声学”,就找不到它


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

您可以在查找以下内容之前修剪范围:

rng.value = Application.Trim(rng.value)
或者,如果范围中有公式,并且您希望保留它们:

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

只需将
Find()
方法的
LookAt
参数设置为
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
参数就足够了)

Wow。。。。你对这个VB的东西很感兴趣。我知道你可以修剪,但不知道你可以这样修剪整个范围。这太完美了。谢谢大家!@抱歉,不客气。您可以查看修剪范围的不同方法。