【问题标题】:VB.NET ranking Excel columns based on a sortVB.NET基于排序对Excel列进行排序
【发布时间】:2012-04-08 09:05:43
【问题描述】:

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

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)

【问题讨论】:

    标签: vb.net excel sorting


    【解决方案1】:

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

    您应该能够提供一个反转排序顺序的 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

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      相关资源
      最近更新 更多