vba - 在另一个工作簿中查找数字或字符串

时间:2015-12-29 11:13:46

标签: excel vba excel-vba

我试图在两个不同的工作簿中查找相同的值。 当单元格包含字符串时,它工作正常,但是当我试图查看数字时,即使匹配的单元格具有相同的数字,它也不起作用。

任何想法?

strSearch = "123" 'the number to look for
rFound = wks.UsedRange.Find(strSearch, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)

2 个答案:

答案 0 :(得分:1)

如下面的评论中提到的OP post,find方法不适用于通过公式结果(= 123/10)搜索值,因此出于此目的,您应使用在该范围内的循环,如以下示例:

Sub test()
    Dim cl As Range, s$
    s = "123"
    For Each cl In ActiveSheet.UsedRange
        If cl.Value = s Then Debug.Print cl.Address(0, 0)
    Next cl
End Sub

试验:

enter image description here

另外,如果您需要找到包含搜索字符串的单元格,那么您可以使用以下内容:

Option Compare Text
Sub test2()
    Dim cl As Range, s$
    s = "S"
    For Each cl In ActiveSheet.UsedRange
        If cl.Value Like "*" & s & "*" Then Debug.Print cl.Address(0, 0)
    Next cl
End Sub

或:

Sub test3()
    Dim cl As Range, s$
    s = "123"
    For Each cl In ActiveSheet.UsedRange
        If InStr(1, cl.Value, s, vbTextCompare) > 0 Then Debug.Print cl.Address(0, 0)
    Next cl
End Sub

答案 1 :(得分:-1)

请尝试以下代码。但我认为如果数据量很大,这将会变慢。

strSearch = "123" 'the number to look for
  Set wks = ThisWorkbook.Sheets("Sheet1")
    For Each cell In wks.UsedRange

    srcstr = cell.Value


    If InStr(1, srcstr, strSearch, vbTextCompare) > 0 Then

        cell.Activate
        Exit Sub
    End If


Next