首页 > 解决方案 > 在单元格中查找公式结果的函数

问题描述

我正在尝试查看 F 列并找到数字 9999 以返回单元格引用。

仅当在 F 列中输入数字 9999 时,我的代码才会返回此数字所在的单元格。

F 列是公式驱动的,数字 9999 是公式背后逻辑的结果。

Dim foundRng as Range
Set foundRng = Range ("F1:F2000").Find("9999")
If foundRng is Nothing then
    MsgBox "Value not found"
Else
    MsgBox foundrng.Address
End if
End Sub

标签: excelvba

解决方案


Find函数具有许多属性。其中大部分是由 Excel 自动设置的,具体取决于上次使用情况。即使您上次Find手动使用,Excel 也会记住您上次的设置。因此,您应该在使用 VBA 时设置所有相关属性。

Sub FindCell()

    Dim foundRng As Range
    
    Set foundRng = Range("F1:F2000").Find(What:="9999", _
                                          After:=Cells(2000, "F"), _
                                          LookIn:=vbValues, _
                                          LookAt:=xlWhole, _
                                          SearchOrder:=xlByRows, _
                                          SearchDirection:=xlNext, _
                                          MatchCase:=False)
    If foundRng Is Nothing Then
        MsgBox "Value not found"
    Else
        MsgBox foundRng.Address
    End If

您的问题的可能来源是LookIn我怀疑您的系统当前使用的属性xlFormulas(它在xlValues上面)。当单元格具有硬值时,例如9999,其公式和值是相同的。但是如果formla的=3*3333值和公式不同,9999就不会出现在公式中。

另一个值得一提的是After房产。Excel 在指定单元格之后的单元格中开始搜索(默认情况下为范围中的第一个单元格)。之后的下一个单元格由SearchDirection属性指定(上面xlNext,可能是xlPrevious)。该函数将遍历整个范围。因此,通过将最后一个单元格指定为afterxlNextdirection,搜索实际上将从第一个单元格开始,而如果指定第一个单元格,After它实际上将是要检查的最后一个单元格。


推荐阅读