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

标签 excel vba find named-ranges

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

例如,如果我将单元格 A5 作为我的事件单元格

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

我想在数组中搜索“文本”并返回单元格 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。

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

最佳答案

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

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

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

关于excel - 使用 FIND 函数返回 VBA 中的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985083/

相关文章:

vba - 在文本末尾添加一个字符并将字母 A 增加到 B

excel - 如何添加超过 240 个条目的每 3 行的值(例如 : a1, a4、a7、a10 等)?

多行的Excel条件格式

excel - 否则,如果没有编译错误

git - 生成一个分层 Markdown 列表,其元素是指向我的 git 存储库中的文件的链接?

java - 从 INPUT-STREAM 加载大型 xlsx 文件,抛出 OutOfMemoryError Apache POI

excel - 基于行值中最后一个单元格的 Autolnumber

vba - SQL 中连接的字符串变量(以 Access 数据库),由于引号导致的语法错误?

javascript - 查找页面上的每个 "string"并将其替换为另一个

batch-file - 使用批处理脚本查找和替换多个文件中的字符串