2

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

有谁知道在应用小计分组后如何对数据进行排序?

4

1 回答 1

0

我遇到了同样的问题,但我只是使用了宏(与您的非常相似),并尝试将其与 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
                );
于 2017-03-31T14:45:40.920 回答