我正在尝试通过excel VBA对数据进行排序,但它已经按不同的标头排序。在设置新字段之前,如何清除所有排序字段?我试过Sort.SortFields.Clear
但是没有用。任何帮助将不胜感激。这是我正在使用的代码:
Sheet9.Activate
Columns("J:J").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(1, "J").Value = "InternalID"
Set rng2 = FindHeader("CLIENT NAME", Sheet9.Name)
Count = 1
Sheet9.Cells.Select
With Sheet9.Sort
.SortFields.Clear
.SortFields.Add Key:=rng2, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
答案 0 :(得分:0)
ActiveSheet.Range("Your_Range_Value").AutoFilter Field:=1
我对每个具有排序字段的列都执行此操作,然后将其清除。其中Field:= X是您要清除的范围内的列号。
这就是我的工作簿中的内容。 Sheet1是工作表的代号,rng是表示范围值(“ B4:G1500”)的字符串
' Clear all filters
Sheet1.Range(rng).AutoFilter Field:=1
Sheet1.Range(rng).AutoFilter Field:=2
Sheet1.Range(rng).AutoFilter Field:=3
Sheet1.Range(rng).AutoFilter Field:=4
Sheet1.Range(rng).AutoFilter Field:=5
Sheet1.Range(rng).AutoFilter Field:=6
答案 1 :(得分:-1)
Dim myData As Range
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Set myData = Selection
myData.Select
myData.AutoFilter
这不会删除排序,但会打开所有原始文件,而不会更改之前的排序。