Excel VBA - AdvancedFilter

时间:2015-04-18 11:35:09

标签: excel vba excel-vba

我正在尝试在VBA中动态过滤范围,而我正在使用的VBA无法正常工作,但我无法看到原因。为了解释,我在一张名为“Full Stock Report”的工作表中有一系列数据,其大小会发生变化,但我在这个例子中已经静态设置了......我试图按列表过滤它在一个工作表范围内保存的标准“Spitfire Aval Locations”,同样这也是动态的,但我在这个例子中再次设置为静态。这对我来说听起来很简单,但下面的代码行应用了一个过滤器但没有结果(我已经检查过,我知道这个过滤器中应该有很多应用)。

我的第二个问题是相关的,这个VBA语句如何指示范围中的哪一列被过滤? (我担心这可能是我的问题....)

Sheets("Full Stock Report").Range("A1:F20623").AdvancedFilter Action:=xlFilterInPlace, 
      CriteriaRange:=Sheets("Spitfire Aval Locations").range("A2:A228"), Unique:=False

2 个答案:

答案 0 :(得分:1)

想想我已经解决了这个问题......本质上,AdvancedFilter要求条件与您的数据集具有相同的格式和相同的列标题。对我来说并不是很有帮助,但我可以把它用来工作。

我也有预感,具有指定标准的AutoFilter可能是更好的选择......

答案 1 :(得分:0)

要过滤的列是您调用.AdvancedFilter的第一个.Range。您发布的代码会过滤A到F列。如果您只想根据A列中的值进行过滤,则看起来更像是这样:

Sheets("Full Stock Report").Range("A1:A20623").AdvancedFilter _
       Action:=xlFilterInPlace, _
       CriteriaRange:=Sheets("Spitfire Aval Locations").Range("A2:A228"), _
       Unique:=False