AdvancedFilter使用SUMIF作为条件

时间:2017-08-27 07:13:29

标签: excel vba

我正在尝试在VBA中使用AdvancedFilter来创建列表的导出。我的问题不在于有效的代码,而在于我尝试使用的标准。我想过滤作为我正在使用的RAW数据集的SUMIF的值。因此,如果在RAW数据= sumif(m:m,a:a,a2)<2,则从列表中排除。我怎么把它放在我的标准中(范围a1:a2)?是唯一的解决方案,在我的原始数据集中创建一个包含sumifs公式的新列,然后根据该标准建立一个标准?

参考代码

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

1 个答案:

答案 0 :(得分:0)

您可以根据条件在另一个单元格中设置一个空白单元格的公式,也可以在工作表的顶部,仅引用第一个数据列表行而不锁定单元格:

例如,您是预先过滤

AssetPairs

in

range("A10:M2010")

将您的标准设为:

range("A2") 

并将范围(“A1”)留空,

然后使用高级过滤器选择

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

然后

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

Excel将在范围的右侧创建另一个要过滤的列,然后过滤它。

尝试使用过滤器并在其他地方复制。

以下是示例(使用意大利语版本的Excel):

Sample of the answer