为数组成员分配编号并选择最高的

时间:2019-06-27 08:01:56

标签: excel vba

我在VBA中有一个用户表单,允许用户选择多个选项(大约1-10个项目)。所有选定的成员都存储在一个大小可以不同的数组中。我正在寻找一种为所有选择的项目分配一个数值(由现有层次结构给定),然后能够选择具有最高值的项目的方法。有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

创建一个二维数组,而不是一维数组。

例如,如果您的数组看起来像

Dim MyArr(2) As Variant
MyArr(0) = "Member1"
MyArr(1) = "Member2"
MyArr(2) = "Member3"

设为二维以为每个成员分配一个数值

Dim MyArr(2, 1) As Variant

MyArr(0, 0) = "Member1"
MyArr(0, 1) = 1

MyArr(1, 0) = "Member2"
MyArr(1, 1) = 2

MyArr(2, 0) = "Member3"
MyArr(2, 1) = 3

enter image description here


(根据评论编辑)

使用2个不同的数组作为成员和值,以便能够使用WorksheetFunction轻松找到最大值。

Option Explicit

Sub test()
    Dim MyArrMembers(2) As String
    Dim MyArrValues(2) As Long

    MyArrMembers(0) = "Member1"
    MyArrValues(0) = 1

    MyArrMembers(1) = "Member2"
    MyArrValues(1) = 100

    MyArrMembers(2) = "Member3"
    MyArrValues(2) = 3

    'find max value
    Dim MaxVal As Long
    MaxVal = Application.WorksheetFunction.Max(MyArrValues)

    'locate max value
    Dim ArrIndex As Long
    ArrIndex = Application.WorksheetFunction.Match(MaxVal, MyArrValues, 0) - 1

    'output member name
    Debug.Print MyArrMembers(ArrIndex) 'returns Member2
End Sub