Excel 使用多个排序键对类集合进行快速排序,这可能吗?

Excel 使用多个排序键对类集合进行快速排序,这可能吗?,excel,vba,Excel,Vba,我修改了我在网上找到的一个快速排序算法,它可以对集合进行排序。它就在这里,我感谢它的作者 我的版本是这样的,它可以通过类中包含的排序键对类集合进行排序。我想做的是扩展这个算法,通过第二个键对集合进行排序,第二个键也包含在类中。我该怎么办?我已经硬编码了排序键,它可能需要参数化。这是我的密码: Sub ClassQuickSort(coll As Collection, first As Long, last As Long) Dim vCentreVal As Variant

我修改了我在网上找到的一个快速排序算法,它可以对集合进行排序。它就在这里,我感谢它的作者

我的版本是这样的,它可以通过类中包含的排序键对类集合进行排序。我想做的是扩展这个算法,通过第二个键对集合进行排序,第二个键也包含在类中。我该怎么办?我已经硬编码了排序键,它可能需要参数化。这是我的密码:

Sub ClassQuickSort(coll As Collection, first As Long, last As Long)

    Dim vCentreVal As Variant

    Dim lTempLow As Long
    Dim lTempHi As Long
    lTempLow = first
    lTempHi = last

    Dim clsTemporaryError As clsError, clsLowError As clsError, clsHiError As clsError
    Dim clsSingleError As clsError

    Set clsSingleError = coll.Item((first + last) \ 2)
    vCentreVal = clsSingleError.variable_name

    Do While lTempLow <= lTempHi

        Do While coll.Item(lTempLow).variable_name < vCentreVal And lTempLow < last
          lTempLow = lTempLow + 1
        Loop

        Do While vCentreVal < coll.Item(lTempHi).variable_name And lTempHi > first
          lTempHi = lTempHi - 1
        Loop

        If lTempLow <= lTempHi Then

          ' Swap values
          Set clsTemporaryError = coll.Item(lTempLow)

          coll.Add coll.Item(lTempHi), After:=lTempLow
          coll.Remove lTempLow

          coll.Add clsTemporaryError, Before:=lTempHi
          coll.Remove lTempHi + 1

          ' Move to next positions
          lTempLow = lTempLow + 1
          lTempHi = lTempHi - 1

        End If

  Loop

  If first < lTempHi Then ClassQuickSort coll, first, lTempHi
  If lTempLow < last Then ClassQuickSort coll, lTempLow, last

End Sub
Public filename As String
Public SysID_Data As Integer
Public PlanReference_Data As String
Public MemberReference_Data As String
Public variable_name As String
Public errortype As String