2017-02-18 95 views
0

有沒有辦法在搜索之前使用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 

這會發現在它的許多變化字的字聲 - 「聲」,「聲音」,「聲」,但是如果它具有前導或尾隨空間,例如「聲學」或「聲學」,則不會找到它。

那麼,在執行搜索之前是否有辦法(輕鬆地)修剪單元格外的空格?或者我將不得不創建一個功能來首先通過範圍和修剪?

回答

0

您可以找到之前修剪範圍:

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

或範圍有公式,你想保持他們:

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

哇....你是全部在這個VB的東西。我知道你可以修剪,但不知道你可以這樣修整整個範圍。太棒了。謝謝! – Apolymoxic

+0

@Aolymoxic歡迎您。你可以看看[這裏](http://stackoverflow.com/questions/42147564/trim-function-remove-spaces-from-cells-using-vba/42148229#42148229)爲不同的方法來修剪範圍。 –

0

剛設置參數Find()方法LookAtxlPart

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

您還可以使相同的搜索CH公式:

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

並予以通報,你應該始終明確specifcy LookInLookAtSearchOrder,並且MatchByte參數,否則Find()會用他們的最後設置,即使從Excel UI! (我發現它足以達到我的目的,總是指定至少LookInLookAt參數)