Excel 第二高和第一高值
我有五名球员,我需要从中选出两名最好的球员 样本数据。 平均击球率 苏拉夫40.73 萨钦44.83 阿尼尔10.54 扎希尔12 拉胡尔39.17 我试过打圈。然而,我无法得到想要的答案 下面是一个代码 在这里输入代码`Excel 第二高和第一高值,excel,vba,Excel,Vba,我有五名球员,我需要从中选出两名最好的球员 样本数据。 平均击球率 苏拉夫40.73 萨钦44.83 阿尼尔10.54 扎希尔12 拉胡尔39.17 我试过打圈。然而,我无法得到想要的答案 下面是一个代码 在这里输入代码` Dim rng As Range, cell As Range Dim highestValue As Double, secondHighestValue As Double Sub nss() Set rng = Selection
Dim rng As Range, cell As Range
Dim highestValue As Double, secondHighestValue As Double
Sub nss()
Set rng = Selection
highestValue = 0
secondHighestValue = 0
'Find Highest Value
For Each cell In rng
Next cell
If cell.Value > highestValue Then highestValue = cell.Value
'Find Second Highest Value
For Each cell In rng
Next cell
If cell.Value > secondHighestValue And cell.Value < highestValue Then secondHighestValue = cell.Value
MsgBox "Second Highest Value is " & secondHighestValue
End Sub
变暗rng作为范围,单元格作为范围
Dim Highest Value为Double,Second Highest Value为Double
副nss()
设置rng=选择
最高值=0
次高值=0
'查找最高值
对于rng中的每个单元
下一个细胞
如果cell.Value>highestValue,则highestValue=cell.Value
'查找第二高的值
对于rng中的每个单元
下一个细胞
如果cell.Value>secondHighestValue且cell.Value
我收到一个错误“运行时错误91”,“对象变量或未设置块”
此外,我也在寻找第一个最高值,然后是第二个最高值
希望有一些好的结果
问候,,
Aiyub遵循BigBen的提示,您需要将
If
语句移动到现有的中,以用于每个循环。您还需要在每个If
语句末尾添加一个end If
,否则宏仍然无法工作
除此之外,不要在Sub
之外声明变量(Dim
),除非您希望在当前模块中重复使用它们(即“模块级变量”)
我还扩展了MsgBox以打印第一个最高值(根据您的请求)
按照BigBen的提示,您需要将If
语句移动到现有的For Each
循环中。您还需要在每个If
语句末尾添加一个end If
,否则宏仍然无法工作
除此之外,不要在Sub
之外声明变量(Dim
),除非您希望在当前模块中重复使用它们(即“模块级变量”)
我还扩展了MsgBox以打印第一个最高值(根据您的请求)
rng中每个单元格的开始循环,下一个单元格的结束循环。循环中没有任何代码。将代码移到内部。rng中每个单元格的开始循环,下一个单元格的结束循环。循环中没有任何代码。把代码移到里面。
Sub nss()
Dim rng As Range, cell As Range
Dim highestValue As Double, secondHighestValue As Double
Set rng = Selection
'highestValue = 0
'secondHighestValue = 0
'Find Highest Value
For Each cell In rng
If cell.Value > highestValue Then
highestValue = cell.Value
End If
Next cell
'Find Second Highest Value
For Each cell In rng
If cell.Value > secondHighestValue And cell.Value < highestValue Then
secondHighestValue = cell.Value
End If
Next cell
MsgBox "Second Highest Value is " & secondHighestValue & vbNewLine & "First Highest Value is " & highestValue
End Sub
Sub nss()
Dim rng As Range, cell As Range
Dim highestValue As Double, secondHighestValue As Double
Set rng = Selection
'Find Highest Value
highestValue = Application.WorksheetFunction.Large(rng, 1)
'Find Second Highest Value
secondHighestValue = Application.WorksheetFunction.Large(rng, 2)
MsgBox "Second Highest Value is " & secondHighestValue & vbNewLine & "First Highest Value is " & highestValue
End Sub