arrays - 如何在 VBA 中对多维数组进行排名

标签 arrays excel vba

我很尴尬,我自己找不到这个答案,但如果我有一个多维 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

如果我想要 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/

    相关文章:

    javascript - Bad Word Catcher Javascript

    vsto - Excel 工作簿激活 C# VSTO 的事件歧义

    vba - 查找某个值的行位置并使用它在 VBA 中进行计算

    excel - 使用 Excel VBA 更改 View

    excel - 我可以在 Excel 宏中模拟按 Enter 键吗?

    vba - 检查找到值旁边的单元格是否为空 VBA

    vba - 将一个工作表中的列中的一系列单元格复制到另一个工作表中的行中的指定单元格

    javascript - 将全局 JavaScript 数组传递给另一个函数

    java - 在 Java 中声明一个大尺寸的 2d Double 数组

    arrays - 使用排序对数组数组进行升序和降序排序