Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 第二高和第一高值_Excel_Vba - Fatal编程技术网

Excel 第二高和第一高值

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

我有五名球员,我需要从中选出两名最好的球员

样本数据。 平均击球率 苏拉夫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
    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