2013-05-12 116 views
1

我試圖用另一個但問題替換字符串是該字符串的部分一致其他字符串。全字匹配/詞組和替換

我試圖創建一個搜索在另一個電子表格的每一行,如果我的搜索短語找到返回該行的功能。當使用較長的單詞或獨特的單詞或者我輸入代碼短語作爲搜索條件時,腳本可以很好地工作。問題是,如果字符串部分匹配其他字符串,它會被複制,並且會得到很多錯誤的結果。

我需要的功能停止的結果的話中尋找,而是看詞或短語作爲一個整體進行匹配。

這是我的腳本至今:

Sub Light() 
    Dim rng1 As Range 
    Dim fnd1 As String 
    fnd1 = "Quantity" 

    Sheets("TEST").Activate 
    Set rng1 = Sheets("TEST").Cells.Find(fnd1) 
    If Not rng1 Is Nothing Then 
    Range(Cells(rng1.Row, rng1.Column), Cells(Rows.Count, rng1.Column).End(xlUp)).Copy _ 
     Sheets("TEMPLATE").Range("A5") 
    Cells(1, 1).Select 
    End If 

在這裏,我有我的問題,因爲第二個搜索條件部分滿足和被複制。

Dim rng2 As Range 
    Dim fnd2 As String 
    fnd2 = "Quantity order min" 
    Sheets("TEST").Activate 
    Set rng2 = Sheets("TEST").Cells.Find(fnd2) 
    If Not rng2 Is Nothing Then 
    Range(Cells(rng2.Row, rng2.Column), Cells(Rows.Count, rng2.Column).End(xlUp)).Copy _ 
     Sheets("TEMPLATE").Range("C5") 
    Cells(1, 1).Select 
    End If 
+0

部分..像「蘋果」中找到「菠蘿」 ? – matzone 2013-05-12 02:06:49

+0

是的,類似的東西。正如你所看到的搜索包含在這兩種情況下詞「數量」,所以當它發現第一個字數量不看整個短語。 – 2013-05-12 02:47:36

回答

3

有註定是一個更好的答案,這甚至可能不會達到你想要的結果 - 但對於任何想別的到目前爲止!:

Sub Light() 
Dim rng1 As Range 
Dim fnd1 As String 
Dim rng2 As Range 
Dim fnd2 As String 

fnd1 = "Quantity" 
fnd2 = "Quantity order min" 

Sheets("TEST").Activate 
Set rng1 = Sheets("TEST").Cells.Find(fnd1) 
If Not rng1 Is Nothing Then 
If Sheets("TEST").Cells.Find(fnd1, LookIn:=xlValues, lookat:=xlWhole) > 1 Then 
    Sheets("TEMPLATE").Select 
Range("A5").Select 
ActiveCell.FormulaR1C1 = fnd1 
End If 
End If 
Sheets("TEST").Activate 
Set rng2 = Sheets("TEST").Cells.Find(fnd2) 
If Not rng2 Is Nothing Then 
If Sheets("TEST").Cells.Find(fnd2, LookIn:=xlValues, lookat:=xlWhole) > 1 Then 
    Sheets("TEMPLATE").Select 
Range("C5").Select 
ActiveCell.FormulaR1C1 = fnd2 
End If 
End If 
End Sub