使用FIND函数返回VBA中的最后一个值



我正在尝试编写一个函数,通过列搜索并返回包含最后匹配的单元格。

例如,如果单元格A5是活动单元格

A1 -> Text
A2 -> wefwqef
A3 -> Text
A4 -> eorbebr

我想通过数组搜索'Text',并为它返回单元格A3,因为这是最后的匹配。

但是如果细胞A7是活动细胞

A1 -> Text
A2 -> wefwqef
A3 -> Text
A4 -> eorbebr
A5 -> fhyeher
A6 -> Text

那么它将返回A6作为我的结果。

我一直在玩FIND函数,试图让它工作,但我不断得到错误(应用程序或基于对象的错误)。

我的计划是将此代码作为更大循环的一部分执行,并且在每种情况下,它返回最接近活动单元格的值。(我希望这是有意义的)

这是我到目前为止的代码:

    Range("A19:I19").Select
    'ActiveCell.FormulaR1C1 = Sheets("Sheet1").Cells(9, 5).Value & ":5 CTs,
     O/C " & _
    'Sheets("Sheet1").Cells(9, 8).Value * 100 & "% @ " & _
    'Sheets("Sheet1").Cells(9, 9).Value & " TM"

    Dim Rng As Range
      With Sheets("Sheet1").Range(Cells(9, 3), Cells(Line, 3))
        Set Rng = .Find(What:="Primary", _
          After:=.Sheets("Sheet1").Cells(Line, 3), _
          LookIn:=xlValues, _
          LookAt:=xlPart, _
          SearchOrder:=xlByRows, _
          SearchDirection:=xlPrevious, _
          MatchCase:=False)

我还想象,当我可以得到这个工作时,我会包括一个DO或IF语句,它会说,一旦值存储在Rng中,那么cellx = Rng。

请帮忙!这段代码有什么问题??

您可以使用数组来保存值,然后反向遍历数组,直到找到您要找的值。

Sub arrayFind()
    Dim currRow As Long
    Dim wb As Workbook, ws As Worksheet, rng as Range
    Dim arrValues() As Variant
    Dim i As Long
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")
    currRow = ActiveCell.Row
    arrValues = Range("A1:A" & currRow)
    For i = UBound(arrValues, 1) To LBound(arrValues, 1) Step -1
        If arrValues(i, 1) = "Text" Then
            set rng = Range(Cells(i, 1).Address)
            Exit For
        End If
    Next i
End Sub

上面创建了一个从ActivecellA1的数组。然后,它从数组的最后一项到第一个项搜索列A(数组的维度1)以查找提供的条件(在本场景中为Text)。这使它能够找到最接近Activecell的匹配条件。

相关内容

  • 没有找到相关文章

最新更新