如何获得自动过滤器字段指示器以指示正确的列?

时间:2017-10-01 17:39:43

标签: excel vba excel-vba autofilter

我有一个包含30个左右列的电子表格。我的目标是根据1列过滤集合,我的方法是指定一个范围只是该列,然后过滤该范围。我在每一列都有自动过滤器,当我指定一个字段时:= 1 excel选择第一列... whcih超出我的范围。因此,它总是试图过滤列#34; A" ...不是列" U"如预期的。我误解了如何使用这个领域?我虽然它是一个范围内的偏移量。

这是一个简单的例子

Dim r As Range
Dim sheet As Worksheet

Set sheet = ThisWorkbook.Worksheets("test")
sheet.Range("u1:u9").AutoFilter field:=1, Criteria1:="Will"

作为旁边...是否有办法获得与列字母相关联的列号?例如U - > 21.如果是这样,我可以选择整个电子表格作为范围,并进行21

的偏移

1 个答案:

答案 0 :(得分:0)

如果要将过滤器应用于一列,则必须先清除现有过滤器。

您的调整代码将是这样的,它将仅将过滤器应用于列U ...

Sub test()
Dim r As Range
Dim sheet As Worksheet

Set sheet = ThisWorkbook.Worksheets("test")
sheet.AutoFilterMode = False
sheet.Range("u1:u9").AutoFilter field:=1, Criteria1:="Will"
End Sub

OR

您也可以将过滤器应用于所有列,并正确指定字段标准。

试一试......

Sub test2()
Dim r As Range
Dim sheet As Worksheet
Set sheet = ThisWorkbook.Worksheets("test")
Set r = sheet.Range("U1")
sheet.AutoFilterMode = False
sheet.Range("A1").CurrentRegion.AutoFilter field:=r.Column, Criteria1:="Will"
End Sub