我拼凑了下面的脚本来对每一列进行排序,以便在其中有错误的空单元格/单元格位于底部。问题是,如果数据列的顶部只有一个空单元格(行4-1000),它就不能正确排序(在那里留空单元格,但正确排序)。
Sub toTop()
'
' toTop Macro
'
' Keyboard Shortcut: Option+Cmd+t
'
Dim sheetName As String
Dim column As Integer
sheetName = ActiveSheet.Name
column = 1
Do Until IsEmpty(Cells(3, column))
Range(Cells(4, column), Cells(1000, column)).Select
ActiveWorkbook.Worksheets(sheetName).Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets(sheetName).Sort.SortFields.Add _
Key:=Range(Cells(4, column), Cells(4, column)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets(sheetName).Sort
.SetRange Range(Cells(4, column), Cells(1000, column))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
column = column + 1
Loop
End Sub
感谢您的帮助,
斯科特
编辑:Google Sheet Mock-up of Problem。这是后期排序,请注意E4仍然是空的。
答案 0 :(得分:0)
由于我的低代表,我必须回答而不是评论。请尝试更改您的VBA中的这一行: .Header = xlGuess 对此: .Header = xlNo
当命令决定何时使用第一行作为标题时,Excel会出错。提供的代码将强制Excel不将第一行用作标题,而是使用可排序的数据。