VBA脚本忽略了一些单元格

时间:2017-01-13 20:16:56

标签: excel vba excel-vba

我拼凑了下面的脚本来对每一列进行排序,以便在其中有错误的空单元格/单元格位于底部。问题是,如果数据列的顶部只有一个空单元格(行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仍然是空的。

1 个答案:

答案 0 :(得分:0)

由于我的低代表,我必须回答而不是评论。请尝试更改您的VBA中的这一行:     .Header = xlGuess 对此:     .Header = xlNo

当命令决定何时使用第一行作为标题时,Excel会出错。提供的代码将强制Excel不将第一行用作标题,而是使用可排序的数据。