2015-11-28 108 views
0

我是VBA Excel新手。我想選擇其他列中的關聯日期在特定範圍內的特定列中的所有值。如何按日期篩選行

我進入AutoFilter似乎進展不順利。此代碼過濾器在正確的範圍內的日期,但我不能讓它包括第一行:

Columns("B:B").AutoFilter Field:=1, _ 
    Criteria1:=">=" & startDate, _ 
    Operator:=xlAnd, _ 
    Criteria2:="<=" & endDate, _ 
    VisibleDropDown:=False 

我不清楚有關使用「字段」參數。另外,MS文檔聲稱「Field」是Variant類型的一個可選參數,但它仍保留Integer,但Excel VBA編輯器會在我不使用它時發出抱怨。

回答

1

field是您要應用過濾器的列。由於您使用的是單列(例如Columns("B:B")),因此必須使用。即列B是列B內的列,因此它是Field:=1

[Optional]可能無法來形容AutoFilter Methodfield參數的最佳方式,但因爲你可以使用自己.AutoFilter不帶參數的重新設置過濾器,嚴格說來所有參數都是可選的。但是,當您應用標準並且文檔應該可能反映這一點時,它不是可選的。

with Columns(2) 
    'turn .AutoFilter on 
    .AutoFilter Field:=1, Criteria1:=">=" & startDate, _ 
     Operator:=xlAnd, Criteria2:="<=" & endDate, _ 
     VisibleDropDown:=False 
    'do stuff here 
    'turn .AutoFilter off 
    .AutoFilter 
End With 
+0

感謝。由於我最終對這些行中的某些非日期值感興趣,是否有直接的方法來過濾日期,但是獲取我想要的列中的值? – Schemer

1

您可以添加其他自動篩選,以進一步優化您的結果爲:

''1st criteria for the dates 

    Sheets("Your sheet").range("Your range").autofilter field =1,Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<=" & endDate 

''2nd Criteria for text in field 2 for eg 

    Sheets("Your sheet").range("Your range").autofilter field =2,Criteria1:="text"