我很尴尬,我自己找不到这个答案,但如果我有一个多维 VBA 数组,并希望使用 Rank/Large/Small
单个维度上的函数,它是如何执行的?
例子:
Dim Arr(1, 2) As Integer
Arr(0, 0) = 1
Arr(0, 1) = 2
Arr(0, 2) = -1
Arr(1, 0) = 100
Arr(1, 1) = 40
Arr(1, 2) = 60
这是一个视觉插图:
![enter image description here](/image/C6D3A.jpg)
如果我想要 Arr(0, x) 字段中的最大数字(即 2),那么它是如何执行的?对于 Arr(1,x) 字段中的最大值,我预计为 100。
我试过了:
Application.WorksheetFunction.Large(Arr(, 2), 1)
这个错误Application.WorksheetFunction.Large(Arr(1, 2), 1)
这给出了那个位置上的那个数组。我用谷歌搜索过:
没运气。我可能会找到它,但我也希望我可能会在这个弱问题上获得 -3 的排名,这样我就可以删除它并获得 SO“羞辱”徽章(或其他任何名称)。
谢谢!
最佳答案
您需要使用工作表的索引功能剥离其中一个等级。
Dim Arr(1, 2) As Integer
Arr(0, 0) = 1
Arr(0, 1) = 2
Arr(0, 2) = -1
Arr(1, 0) = 100
Arr(1, 1) = 40
Arr(1, 2) = 60
Debug.Print Application.Large(Application.Index(Arr, 0, 2), 1)
索引用作第二个“列”(2)中的所有“行”(0)。 2到40之间的第二个等级,40是最大的。
关于arrays - 如何在 VBA 中对多维数组进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51015963/