2014-10-16 35 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

相关问题