2017-08-27 65 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