我想在数组中找到第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/