2012-04-19 97 views
1

我需要使用C#在Excel中對多個列進行排序。我正在使用Microsoft.Office.Interop.Excel進行此操作。但是Range.Sort允許我僅排序三列。我想分三個以上的列?有沒有一種方法可以使用Excel.Range.Sort方法對三個以上的列進行排序?使用C#在Excel中對多個列進行排序

回答

1

在Excel 2007之前,您僅限於3個排序鍵 - Range.Sort不會讓您使用更多。如果這是您的目標版本,那麼您需要發揮創意:一些可能的想法是將數據提取到您的C#代碼並對其進行排序,或者構建包含連接密鑰的額外工作表列,然後正常應用Sort

如果您僅使用Excel 2007或更高版本,則可以使用更靈活的排序功能:Worksheet.Sort。我在A1:J30中構建了一個隨機數字的30x10表格,並記錄了一個按前五列排序的宏。這是我得到了(清潔,有點去重代碼後):

With ActiveWorkbook.Worksheets("Sheet1").Sort 
    With .SortFields 
     .Clear 
     .Add Key:=Range("A1:A30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     .Add Key:=Range("B1:B30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     .Add Key:=Range("C1:C30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     .Add Key:=Range("D1:D30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
     .Add Key:=Range("E1:E30"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    End With 
    .SetRange Range("A1:J30") 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

這應該是很容易應用到你的C#代碼...

+0

謝謝麥克。我能夠將它應用於我的C#代碼。它運作良好。 – 2012-04-23 03:51:47