【问题标题】:Programmatically Sort Data in Excel After Using Subtotal Function Using C#使用 C# 使用小计函数后以编程方式在 Excel 中对数据进行排序
【发布时间】:2014-01-18 16:28:45
【问题描述】:

我有要应用小计函数的数据,然后按降序对结果数据进行排序。到目前为止,我已经设法让我的代码应用小计函数,然后更改视图,以便它只显示我想要排序的列。我现在无法弄清楚如何使用 .Sort 方法仅对可见数据进行排序。

我实现小计的代码:

xcel.Range range = excelWorksheet.UsedRange;
        range.Subtotal(1, Excel.XlConsolidationFunction.xlSum, Type.Missing, (object)true, (object)false, Excel.XlSummaryRow.xlSummaryBelow);

我的代码将视图更改为我想要排序的列:

excelWorksheet.Outline.ShowLevels(2, Type.Missing);

此时,我已经尝试了 .Sort 方法的许多变体,几乎使用了我能想到的所有范围(可见范围、明确说明我想要的列、整个工作表、小计过滤器之前使用的范围、小计过滤器后使用的范围)。我也尝试在 Excel 中录制宏,但我不知道如何将其转换回 C#。

正是我需要的 Excel 宏是:

Range("G3").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("G3"), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("A2:G2853")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

有人知道小计分组后如何对数据进行排序吗?

【问题讨论】:

    标签: c# excel sorting excel-interop subtotal


    【解决方案1】:

    我遇到了同样的问题,但我只是使用了宏(与您的非常相似),并尝试将其与 Excel 方法 Sort 进行匹配。以下对我有用:

         range.Sort(Key1: range.Columns[8], Order1: ExcelM.XlSortOrder.xlDescending,
                    Header: ExcelM.XlYesNoGuess.xlYes,MatchCase: false,
                    Orientation: ExcelM.XlSortOrientation.xlSortColumns,
                    SortMethod:ExcelM.XlSortMethod.xlPinYin
                    );
    

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2018-07-05
      • 2017-10-04
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多