使用查找函数

时间:2016-07-28 12:54:55

标签: excel-vba vba excel

我正在编写代码,我需要找出一个字符串“total”或“totalals” 我试过这段代码

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total" OR "totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False)

我也试过这个

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total" OR what:="totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False)

是否可以像这样使用FIND功能。如果没有,请指导我找出这两个字符串中的一个。

2 个答案:

答案 0 :(得分:4)

不,你不能那样搜索。但是,解决方法很简单

Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="total", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False)
If lRow Is Nothing then 
   Set lRow = ws.Range(nRow & ":" & aRow).Find(what:="totals", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False)
End If

请注意,此过程可以根据您要检查的条件进行扩展,假设它们是独占的

答案 1 :(得分:2)

因为“total”是“总计”的子字符串,我们可以使用 xlPart 搜索“total”来找到任何一个字:

Sub ytrewq()
    Dim ws As Worksheet, lRow As Range

    Set ws = ActiveSheet
    Set lRow = ws.Range("A:A").Find(what:="total", after:=Range("A1"), lookat:=xlPart)
    MsgBox lRow.Address(0, 0)
End Sub