【问题标题】:Find cells that have common values in vba在 vba 中查找具有共同值的单元格
【发布时间】:2014-12-12 05:24:19
【问题描述】:

我正在尝试编写一个宏,它将遍历一列并获取每个单元格并找到所有其他近似匹配的单元格并将它们移动到另一个电子表格。我想过使用 find 方法,但我不确定如何实现它。我已经粘贴了我到目前为止所做的事情,这并不多。我对 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

【问题讨论】:

  • 在实践中“找到所有其他近似匹配的单元格”是什么意思?
  • 例如,如果您有一个单元格包含单词 Alka-Seltzer,另一个包含 Alka-Seltzer Gold,另一个包含 Alka-Seltzer Heartburn,它将根据共同点将它们组合在一起短语“Alka-Seltzer”。
  • 看看这是否有帮助:stackoverflow.com/questions/13291313/…

标签: excel vba find


【解决方案1】:

这是一个简单的解决方案,可以让您继续前进。准系统,因为搜索字符串、搜索列、工作表等内容是硬编码的。 “匹配”放置在名为“匹配”的工作表中,与从中提取它们的“数据”表 (Col 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

这种方法使用了您在原始帖子中提到的 Find(和 FindNext)方法。

可以在herehere 找到更多参考资料。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多