1
我需要使用C#在Excel中對多個列進行排序。我正在使用Microsoft.Office.Interop.Excel進行此操作。但是Range.Sort允許我僅排序三列。我想分三個以上的列?有沒有一種方法可以使用Excel.Range.Sort方法對三個以上的列進行排序?使用C#在Excel中對多個列進行排序
我需要使用C#在Excel中對多個列進行排序。我正在使用Microsoft.Office.Interop.Excel進行此操作。但是Range.Sort允許我僅排序三列。我想分三個以上的列?有沒有一種方法可以使用Excel.Range.Sort方法對三個以上的列進行排序?使用C#在Excel中對多個列進行排序
在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#代碼...
謝謝麥克。我能夠將它應用於我的C#代碼。它運作良好。 – 2012-04-23 03:51:47