2016-03-02 123 views
0

我有一个工作表填充数据。我需要过滤只能显示信息w/in 5 miles的数据。一旦数据过滤到w/in 5 miles,我需要按升序对差异列进行排序。我使用了一个记录宏,并试图将其纳入。过滤工作正常,但我得到一个错误说:如何对vba中的过滤数据进行排序?

Compile Error: Expected Array

当我运行它。这是我的代码片段。当错误弹出时,Range在第6行代码中突出显示。

.Worksheets("Market Work").Cells.Select 
Selection.AutoFilter 
.Worksheets("Market Work").Range("$A$1:$Q$" & RowLast2).AutoFilter Field:=5, Criteria1:= _ 
    "w/in 5 miles" 


ActiveWorkbook.Worksheets("Market Work").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Market Work").Sort.SortFields.Add Key:=Range(_ 
    "G2:G112"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("Market Work").Sort 
    .SetRange Range("A1:Q112") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+0

你有没有考虑先进行排序,然后过滤? –

+0

我试过了,得到了同样的错误....在同一个地方 – KSharp

回答

0

下面的代码将帮助你......

Sheets("Finnet").Select 
Sheets("Finnet").AutoFilterMode = False 
Sheets("Finnet").Range("A1", Range("XFD1").End(xlToLeft)).Select 
Sheets("Finnet").Range(Selection, Range("A" & Rows.Count).End(xlUp)).AutoFilter 
Sheets("Finnet").AutoFilter.Sort.SortFields.Add Key:=Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending 
Sheets("Finnet").AutoFilter.Sort.Header = xlYes 
Sheets("Finnet").AutoFilter.Sort.Apply 
Sheets("Finnet").AutoFilterMode = False 
+0

我试过上面的代码...它在第三行突出显示“范围”并给出了相同的错误信息。 – KSharp