我正在尝试查找并定义一行描述范围内最大值的行。范围是一列带小数点的数字,该数字被导入到工作表中。我可以找到最大值,但是当我尝试定义它所在的行时,.Find函数将返回“对象变量或未设置块变量”。
我知道如果找不到该值,则会返回此错误。 .Find操作之前的MsgBox dMax表明它已找到该范围的最大值。
数据集是一系列长的正负非整数,例如-0.594396474479286。我确保数据格式为“常规”。
'finding highpoint
Dim dMax As Double
Dim HighPoint As Long
With ActiveSheet.Range("A2:A10000")
dMax = WorksheetFunction.Max(.Range("A2:A10000"))
MsgBox dMax
If dMax > 0 Then
HighPoint = Range("A2:A10000").Find(What:=dMax, After:=.Cells(1, 1), _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Row
End If
End With
有人可以指出我在这里做错了什么吗?似乎.find函数找不到最大值。
答案 0 :(得分:1)
使用工作表的“匹配”功能找到包含最大数量的行。
private static IDocumentStore store = new DocumentStore()
{
Urls = new[] { "url" },
Database = "DatabaseName"
}.Initialize();
您自己的代码可能遇到浮点十进制问题。
注意使用With,End With块。 Dim dMax As Double
Dim HighPoint As Long
With ActiveSheet.Range("A:A")
dMax = application.Max(.cells)
MsgBox dMax
If dMax > 0 Then
HighPoint = application.Match(application.Max(.cells), .cells, 0)
End If
End With
debug.print HighPoint
中的.Range("A2:A10000")
实际上是工作表上的ActiveSheet.Range("A2:A10000")
,在第二次使用.Range("A3:A10001")
时您缺少前缀.
。
答案 1 :(得分:1)
您引用的搜索范围之外的“后”值。您可以简单地删除此命名参数,或将其更改为
HighPoint = Range("A2:A10000").Find(What:=dMax, After:=Cells(2, 1), _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Row