我有一个选定的范围,在该范围内我想按特定列排序,以便每一行保持相同,即排序函数只是根据我选择排序的列重新排序整个行。
到目前为止,我的代码是这样的:
Sub CustomSortAscendingExcel(ByVal control As IRibbonControl, ByRef cancelDefault As Variant)
Dim selRange As range
Dim usedRange As range
Dim checkRange As range
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
shtData.Activate
shtData.Unprotect
Set selRange = Selection
Set usedRange = returnUsedRange
Set checkRange = Intersect(usedRange, selRange)
If Not Application.Intersect(usedRange, selRange) Is Nothing Then
With ActiveSheet
usedRange.Sort Key1:=selRange, Order1:=xlAscending, DataOption1:=xlSortNormal, MatchCase:=False, SortMethod:=xlPinYin, _
Header:=xlNo, Orientation:=xlSortColumns
.Sort.Apply
End With
与降序排序类似。这适用于 column1。我的问题是,对于第 2、3、4 列,它仅适用于那些在 column1 中有值的行,而不适用于那些没有的行。例如,在下图中,按第 3 列排序正确地重新排序了前 9 行,而不是最后两行。
任何人都可以提出解决此问题的方法吗?谢谢!