我试图按照范围A2-A30000中的A列进行排序,我想在第A行第1行进行下拉,但它既没有排序也没有启用A列第1行的下拉列表。即使没有VBA当我只选择A1并按下过滤器时,它会自动结束将下拉列表放在A2上。发生的另一个问题是它只对A列进行排序,但只是移动A列,但只留下其他列,导致整个工作表出错。
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A2:A30000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
知道可能出现什么问题吗?
答案 0 :(得分:1)
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet3").Sort
.SetRange Range("A2:BZ30000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
感谢您的评论
答案 1 :(得分:1)
您只引用A列;使用.CurrentRegion属性将数据“孤岛”隔离到第一个完全空白的行和完全空白的列。我怀疑你在A1中有一个文本列标签。
With ActiveWorkbook.Worksheets("Sheet3")
With .Cells(1, "A").CurrentRegion
.Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes
End With
End With
录制的代码在某些情况下可以正常工作,但可以通过VBA功能更有效地处理排序。
你真的应该知道你是否有标题;永远不要使用xlGuess。