Excel 查找由';查找';功能
这是我的代码,试图找到find()之前找到的值的行号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
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的源代码找不到您的价值可能有很多原因。你为什么不分享剩下的代码,或者是相关工作表的截图,这样我们就有机会解决你的问题。有很多原因,为什么找不到你的价值。你为什么不分享剩下的代码,或者相关工作表的截图,这样我们就有机会解决你的问题了。