VB.NET基于排序对Excel列进行排名

时间:2012-03-23 19:30:20

标签: vb.net excel sorting

好吧,我经历了很多这样的事情,并且已经达到了我可以对数组进行排序的程度。我现在需要做的是采用以下代码并按降序排序元素而不是升序。我不知道如何使用代码中的两个参数:

Dim Cols(3) As Int16
Cols(0) = ColumnNumber + 1
Cols(1) = ColumnNumber + 2
Cols(2) = ColumnNumber + 3
Cols(3) = ColumnNumber + 4

Dim Vals(3) As Double
Vals(0) = xlsWorkSheet.Cells(r, ColumnNumber + 1).value
Vals(1) = xlsWorkSheet.Cells(r, ColumnNumber + 2).value
Vals(2) = xlsWorkSheet.Cells(r, ColumnNumber + 3).value
Vals(3) = xlsWorkSheet.Cells(r, ColumnNumber + 4).value

Array.Sort(Vals, Cols)

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以通过反转排序结果来实现降序排序。

您应该能够提供一个反转排序顺序的IComparer实例。

Public Class myReverserClass
    Implements IComparer

    ' Calls CaseInsensitiveComparer.Compare with the parameters reversed.
    Function Compare(x As [Object], y As [Object]) As Integer _
        Implements IComparer.Compare
        Return New CaseInsensitiveComparer().Compare(y, x)
    End Function 'IComparer.Compare

End Class 'myReverserClass

执行反向排序:

Dim myComparer = New myReverserClass()
Array.Sort(Vals, Cols, myComparer)

MSDN上有一个例子:http://msdn.microsoft.com/en-us/library/system.array.sort(v=vs.71).aspx