Excel 查找由';查找';功能

Excel 查找由';查找';功能,excel,vba,Excel,Vba,这是我的代码,试图找到find()之前找到的值的行号 Dim rng as range Dim fndrng as range Set rng = Range(cells(row1, col), Cells(row2, col)) max_value = Application.WorksheetFunction.Max(rng) Set fndrng = rng.find(what:=max_value, LookIn:=xlValues) answer = fndrng.row

这是我的代码,试图找到find()之前找到的值的行号

Dim rng as range
Dim fndrng as range

Set rng = Range(cells(row1, col), Cells(row2, col))
max_value = Application.WorksheetFunction.Max(rng) 
    
Set fndrng = rng.find(what:=max_value, LookIn:=xlValues)
answer = fndrng.row
我的代码不起作用,而是打印错误,说, “运行时错误'91': 对象变量或未设置块变量“

在我看来,fndrng在运行线路后总是空的。但是,如果我通过“ctrl+F”在工作表中手动使用“查找”功能,它可以找到值

有人能帮我吗?我不知道为什么它不起作用。若你们能分享更好的选择,当它涉及到获得我正在寻找的价值行号,我将不胜感激


谢谢。

对于共享代码,我相信您可能对以下行有问题:

Set rng = Range(cells(row1, col), Cells(row2, col)
您没有共享代码中
row1
row2
col
的对象类型。因此,我将对您共享的代码进行假设,并将这些对象声明为
Long

Dim row1 As Long
Dim row2 As Long
Dim col As Long

row1 = 1
row2 = 20
col = 1

Set rng = Range(cells(row1, col), Cells(row2, col))
这将使
rng
相当于
“A1:A20”
您当然可以将其修改为所需的范围,并可能添加一个
col1
col2
来扩展范围。现在,我们在
“A1:A20”
范围内查找
最大值。下面是我使用的测试代码和工作表中的模拟:

Sub test()
Dim rng As Range
Dim fndrng As Range

Dim row1 As Long
Dim row2 As Long
Dim col As Long

row1 = 1
row2 = 20
col = 1

Set rng = Range(Cells(row1, col), Cells(row2, col))

max_value = Application.WorksheetFunction.Max(rng)
        
Set fndrng = rng.Find(what:=max_value, LookIn:=xlValues)
answer = fndrng.row

MsgBox answer

End Sub
在我的工作表中的值下面,
max_值
将位于第9行中的100

MsgBox收到:


对于共享代码,我相信您可能会遇到以下问题:

Set rng = Range(cells(row1, col), Cells(row2, col)
您没有共享代码中
row1
row2
col
的对象类型。因此,我将对您共享的代码进行假设,并将这些对象声明为
Long

Dim row1 As Long
Dim row2 As Long
Dim col As Long

row1 = 1
row2 = 20
col = 1

Set rng = Range(cells(row1, col), Cells(row2, col))
这将使
rng
相当于
“A1:A20”
您当然可以将其修改为所需的范围,并可能添加一个
col1
col2
来扩展范围。现在,我们在
“A1:A20”
范围内查找
最大值。下面是我使用的测试代码和工作表中的模拟:

Sub test()
Dim rng As Range
Dim fndrng As Range

Dim row1 As Long
Dim row2 As Long
Dim col As Long

row1 = 1
row2 = 20
col = 1

Set rng = Range(Cells(row1, col), Cells(row2, col))

max_value = Application.WorksheetFunction.Max(rng)
        
Set fndrng = rng.Find(what:=max_value, LookIn:=xlValues)
answer = fndrng.row

MsgBox answer

End Sub
在我的工作表中的值下面,
max_值
将位于第9行中的100

MsgBox收到:


我假设它不是像DTLC\u max vs max\u value那样简单

我假设它不是像DTLC\u max vs max\u value那样简单

你需要将
rng
定义为
范围
类型。尝试下面的子代码,然后根据自己的代码进行调整

Sub FindMaxValueRow()
Dim rng As Range

    With Worksheets(1).Range("A1:A500")
        Set rng = .Find(2, LookIn:=xlValues)
        If Not rng Is Nothing Then
            MsgBox rng.Row
        End If
    End With
    
End Sub
要搜索最大值,请使用此行
Set rng=.Find(最大值,LookIn:=xlValues)


Microsoft的源代码

您需要将
rng
定义为
范围
类型。尝试下面的子代码,然后根据自己的代码进行调整

Sub FindMaxValueRow()
Dim rng As Range

    With Worksheets(1).Range("A1:A500")
        Set rng = .Find(2, LookIn:=xlValues)
        If Not rng Is Nothing Then
            MsgBox rng.Row
        End If
    End With
    
End Sub
要搜索最大值,请使用此行
Set rng=.Find(最大值,LookIn:=xlValues)


Microsoft的源代码

找不到您的价值可能有很多原因。你为什么不分享剩下的代码,或者是相关工作表的截图,这样我们就有机会解决你的问题。有很多原因,为什么找不到你的价值。你为什么不分享剩下的代码,或者相关工作表的截图,这样我们就有机会解决你的问题了。