2015-04-03 91 views
0

我有一個街道名稱和地址列表。現在我想查看地址欄中是否有與街道名稱中的值相匹配的值,然後返回街道名稱。搜索範圍內的文本,如果匹配,返回匹配值

enter image description here

+0

如果一個單元格包含整個地址作爲字符串如何知道該字符串的哪個部分是街道名稱,如果沒有分隔符或者是否有另一個街道名稱列表。 – 2015-04-03 10:40:07

+0

街道名稱是標準清單作爲來源進行比較。 – 2015-04-03 10:57:00

+0

我認爲我的問題類似於http://stackoverflow.com/questions/18937704/lookup-a-value-from-database-and-get-the-list-of-matching-values-to-another-shee? rq = 1 – 2015-04-03 11:01:08

回答

0

假設地址是A1:

For AddressRow = FirstRow To LastRow 
    address = Cells(AddressRow,1) 
    For StreetRow = FirstRow To LastRow 
     If "*" & Cells(StreetRow,3) & "*" Like address Then MsgBox Cells(StreetRow,3) 
    Next 
Next 

我希望你能定義FIRSTROW的LASTROW和知道你要的是現在去一個消息輸出。

+0

它不起作用。我認爲問題與&「*」......... – 2015-04-03 17:05:41

+0

我總是混淆他們,讓我知道如果'地址喜歡「*」&細胞(StreetRow,3)和「*」'工程。星號非常重要,它們表示它是一個子字符串。你可以使用等效的'InStr()'函數。 – user3819867 2015-04-04 22:03:21

+0

順便說一下,「*」是通配符,表示任何字符;我已經成功地將它用於SQL查詢,Excel和Access VBA宏(確切的說是決策樹)。 – user3819867 2015-04-05 10:25:46

0

假設地址列是A Street_name列是C。此代碼不是最優雅的,但工作。

Private Sub DoTheJob() 
    Dim intRowStreetName As Integer 
    Dim intRowAdress As Integer 
    intRowStreetName = 1 
    intRowAdress = 1 
    strPartOfStreetName = "nguyen" 
    With Worksheets("Sheet1") 
     Do While .Cells(intRowStreetName, 3).Value <> Empty 
      intRowAdress = 1 
      If InStr(1, .Cells(intRowStreetName, 3).Value, strPartOfStreetName, vbTextCompare) > 0 Then 
       Do While .Cells(intRowAdress, 1).Value <> Empty 
        If InStr(1, .Cells(intRowAdress, 1).Value, .Cells(intRowStreetName, 3).Value, vbTextCompare) > 0 Then 
         .Cells(intRowAdress, 2).Value = .Cells(intRowStreetName, 3).Value 
        End If 
       intRowAdress = intRowAdress + 1 
       Loop 
      End If 
      intRowStreetName = intRowStreetName + 1 
     Loop 
    End With 
End Sub 
+0

感謝kitap mitap,它對我來說就像一個魅力,現在,沒有必要使用strPartOfStreetName。非常感謝!我是VBA的開始,這對我很有用。 – 2015-04-03 16:20:51