2014-10-16 40 views
1

我正在嘗試編寫一個宏,它將循環遍歷一列,並取每個單元格並查找所有其他近似匹配的單元格,並將它們移動到另一個電子表格。我想過使用find方法,但我不確定如何實現它。我粘貼了迄今爲止所做的,這並不多。我很新vba,所以任何幫助將不勝感激。在vba中查找具有共同值的單元

Sub Extract() 

Dim i As Long, count As Long, rng1 As Range 

Set rng1 = Sheet1.Range(Range("N1"), Range("N1").End(xlDown)) 
count = 2 
For i = 1 To Sheet1.Range(Range("N1"), Range("N1").End(xlDown)).Rows.count 

Sheet1.Cells(count, 14).Select 


count = count + 1 

Next i 

End Sub 
+0

「找到所有其他近似匹配的單元格」在實踐中意味着什麼? – 2014-10-16 18:21:06

+0

例如,如果您有一個包含Alka-Seltzer字樣的單元格,另一個包含Alka-Seltzer Gold字樣的單元格以及另一個包含Alka-Seltzer燒心字體的單元格,則會根據常見短語「Alka-Seltzer」將它們組合在一起。 – user4122516 2014-10-16 18:27:14

+0

看看是否有幫助:http://stackoverflow.com/questions/13291313/matching-similar-but-not-exact-text-strings-in-excel-vba-projects – ariscris 2014-10-16 18:59:32

回答

0

這是一個簡單的解決方案,讓你走。因爲諸如搜索字符串,搜索欄,工作表等等的東西都是硬編碼的。 '匹配'被放置在一個名爲'匹配'的工作表中與'數據'表(列A)位於同一'位置',並從中提取出它們。

Sub findlikes() 
Dim wsDat As Worksheet, wsMat As Worksheet 
Dim strSearch As String, firstAdd As String 
Dim fndCell As Range 
Dim srchCol As Long, numFnd As Long 

Set wsDat = Sheets("Data") 
Set wsMat = Sheets("Matches") 
srchCol = 1 'Col A 
strSearch = "Alka-Seltzer" 

Set fndCell = wsDat.Columns(srchCol).Find(What:=strSearch, LookIn:=xlValues, _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
     MatchCase:=False, SearchFormat:=False) 

    If Not fndCell Is Nothing Then 
     firstAdd = fndCell.Address 
     numFnd = 1 
      Do 
       wsMat.Range(fndCell.Address).Value = fndCell.Value 
       Set fndCell = wsDat.Columns(srchCol).FindNext(fndCell) 
       numFnd = numFnd + 1 
      Loop While Not fndCell Is Nothing And fndCell.Address <> firstAdd 
    Else 
     MsgBox "Search String Not Found" 
    End If 
End Sub 

該方法使用您在原始文章中提到的F​​ind(和FindNext)方法。

對這些的進一步引用可以參見herehere

相關問題