Excel VBA中的Range.Find方法返回错误的行

时间:2015-05-04 20:10:27

标签: excel excel-vba vba

我正在尝试使用VBA在excel中搜索字符串..例如 我的工作表包含以下数据

$ update-alternatives --display libblas.so
libblas.so - auto mode
  link currently points to /usr/lib/openblas-base/libblas.so
/usr/lib/libblas/libblas.so - priority 10
  slave libblas.a: /usr/lib/libblas/libblas.a
/usr/lib/openblas-base/libblas.so - priority 40
  slave libblas.a: /usr/lib/openblas-base/libblas.a
Current 'best' version is '/usr/lib/openblas-base/libblas.so'.

如果只有一行出现1.Lalit 2.Lalit 它会给出正确的结果,而如果有2行具有相同的字符串,则返回第二行而不是第一行。请帮助我如何返回正确的行。

2 个答案:

答案 0 :(得分:0)

根据MSDN article about Range.Find(),您可以指定要在其后开始搜索的单元格。您还可以指定搜索方向。假设您的范围为A1:A500,并且您希望找到Latit的第一个实例,则可以使用:

Range("A1:A500").Find("Test", Range("A500"), , , xlByRows, xlNext).Row

开始在A500处搜索,该搜索将自动换行到第一行。 Excel会返回它可以找到的第一个结果,因此您将获得1作为答案(假设Latit位于A1

答案 1 :(得分:0)

与JNevill基本相同,但确保

  • 搜索从A列中的最后一个单元格开始(即从A1开始)
  • 处理"不匹配" - 应始终使用
  • 测试Find

Sub FindEx()
Dim strFind As String
Dim rng1 As Range

strFind = "Lalit"
Set rng1 = Cells.Find(strFind, Cells(Rows.Count, "A"), xlValues, xlPart, , xlNext)

If Not rng1 Is Nothing Then MsgBox "first value of " & strFind & " found in " & rng1.Address(0, 0)

End Sub