2017-08-27 62 views
0

我想在VBA中使用AdvancedFilter來創建列表的導出。我的問題不在於代碼,它適用於我正在嘗試使用的標準。我想過濾的是我正在使用的RAW數據集的SUMIF值。因此,如果在RAW數據= sumif(m:m,a:a,a2)< 2上,則從列表中排除。我怎麼會把這個放在我的標準(Range a1:a2)?是唯一的解決方案,在我的原始數據集中創建一個包含sumifs公式的新列,然後基於此標準創建一個標準?使用SUMIF作爲標準的AdvancedFilter

參考代碼

FilterData() 

Sheets("RAW").Range("A1:n2000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ 
    Sheets("Criteria").Range("a1:a2"), CopyToRange:=Sheets("EXPORT").Range("A1:n1"), Unique:=True 
Columns.AutoFit 
Cells.WrapText = False 
    End Sub 

回答

0

可以與在所述標準空白單元設置在該式中的另一小區,也許在片材的頂部,而不鎖定細胞只參照第一數據列表行:

例如,你是預先過濾

range("A10:M2010") 

range("A2") 

把你的標準爲:

=sumif($M$10:$M$2010,$A$10:$A10$2010,A10)<2 

,並留下範圍( 「A1」)的空白,

然後用事先過濾器選擇

list range as $A$10:$M$2010 

那麼

criteria range as 'SheetName'!$A$1:$A$2 (Blank cell, and formula) 

Excel將d與在範圍右側創建另一列進行過濾,然後將其過濾相同。

試用此篩選器並在另一個地方複製。

這裏是樣品(以Excel的意大利版本):

Sample of the answer