doo*_*ers 6 arrays excel vba excel-vba
我想找到数组中第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
Run Code Online (Sandbox Code Playgroud)
n = 1 ---> 3
n = 2 ---> 2(但我希望它为0)
n = 3 ---> 2
n = 4 ---> 1
使用第二个数组快速获得您想要的内容,而无需为每个值循环遍历每个元素 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11623 次 |
最近记录: |