我有要将小计函数应用于的数据,然后按降序对结果数据进行排序。到目前为止,我已经设法让我的代码应用小计函数,然后更改视图,以便它只显示我想要排序的列。我无法弄清楚如何在此时使用.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
有没有人知道在应用小计分组后如何对数据进行排序?
答案 0 :(得分:0)
我遇到了同样的问题,但我只是拿了宏(与你的非常相似),我试图将它与Excel方法排序。以下对我有用:
range.Sort(Key1: range.Columns[8], Order1: ExcelM.XlSortOrder.xlDescending,
Header: ExcelM.XlYesNoGuess.xlYes,MatchCase: false,
Orientation: ExcelM.XlSortOrientation.xlSortColumns,
SortMethod:ExcelM.XlSortMethod.xlPinYin
);