2015-07-20 62 views
0

美好的一天。使用变量的Excel数据过滤数据

下面的代码做我想做的事,即正确地过滤我的数据。

ActiveSheet.Range("$A$1:$AV$791").AutoFilter Field:=5, Criteria1:=Array(_ 
     "Delta", "Ladner", "Tsawwassen"), Operator:=xlFilterValues 

但是,我想使用变量来更改和过滤不同的城市。 下面的代码给了我随附的字符串。

cityStr = """Delta""" & ", " & """Ladner""" & ", " & """Tsawwassen""" 
returns the string: "Delta", "Ladner", "Tsawwassen" 

但是,当我把变量放入filter语句中时,它什么也不做。如果我在cityStr周围使用引号,则无关紧要 - 不起作用。

ActiveSheet.Range("$A$1:$AV$791").AutoFilter Field:=5, Criteria1:=Array(_ 
    cityStr), Operator:=xlFilterValues 

有关如何在数组中使用变量的任何建议?

感谢 莱斯

+0

您是否调试并检查变量中的值被替换后的最终值是什么? – Spidey

+0

是的,变量显示为“Delta”,“Ladner”,“Tsawwassen”。如果它在一个变量中,Autofilter似乎无法识别这个字符串。结果是没有任何东西被过滤,并创建一个没有任何东西的过滤列表。 –

+0

如果我使用单个变量(如deltaStr =“Delta”),并且删除阵列,则自动过滤器可以正常工作。所以autofilter语句以Criteria1:= deltaStr结束。这工作正常,它是我遇到麻烦的数组中的变量。 –

回答

3

它想要一个数组,所以给它一个数组

Sub test() 
Dim ws As Worksheet 
Set ws = ActiveSheet 
Dim rng As Range 
Set rng = ws.Range("A1:A10") 
Dim CityStr() As Variant 
CityStr() = Array("Delta", "Ladner", "octopus") 
rng.AutoFilter field:=1, Criteria1:=CityStr(), Operator:=xlFilterValues 
End Sub 

声明一个变量数组,与你的字符串填充它,并把它作为标准1。我认为你必须使用变种kb

+0

谢谢。这似乎已经成功了。我会用不同的变量来尝试。 –

+0

简而言之:+1(但你应该缩进) –