我想在数组中找到第n个最大值的索引。我可以执行以下操作,但是当2个值相等时会遇到麻烦。

fltArr(0)=31
fltArr(1)=15
fltArr(2)=31
fltArr(3)=52

For i = 0 To UBound(fltArr)
    If fltArr(i) = Application.WorksheetFunction.Large(fltArr, n) Then
        result = i
    End If
Next

最佳答案

使用第二个数组快速获取所需的内容,而无需遍历n的每个值的每个元素

Sub test()

Dim fltArr(0 To 3)
Dim X
Dim n As Long
Dim lngPos As Long

fltArr(0) = 31
fltArr(1) = 15
fltArr(2) = 31
fltArr(3) = 52

X = fltArr

For n = 1 To 4
    lngPos = Application.WorksheetFunction.Match(Application.Large(X, n), X, 0) - 1
    Debug.Print lngPos
    X(lngPos) = Application.Max(X)
Next

End Sub

关于arrays - VBA-获取数组中第n个最大值的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28468718/

10-11 05:35