Vba 如何让自动筛选字段指示器指示正确的列?

Vba 如何让自动筛选字段指示器指示正确的列?,vba,excel,autofilter,Vba,Excel,Autofilter,我有一个大约30列的电子表格。我的目标是基于1列过滤集合,我的方法是指定一个范围就是该列,然后过滤该范围。我在每一列上都有自动筛选功能,当我指定一个字段:=1时,excel会选择第一列…它超出了我的范围。所以它总是试图过滤列“A”…而不是按需要过滤列“U”。我是否不了解如何使用该字段?我认为这是一个范围内的偏移量 这里有一个简单的例子 Dim r As Range Dim sheet As Worksheet Set sheet = ThisWorkbook.Worksheets("test"

我有一个大约30列的电子表格。我的目标是基于1列过滤集合,我的方法是指定一个范围就是该列,然后过滤该范围。我在每一列上都有自动筛选功能,当我指定一个字段:=1时,excel会选择第一列…它超出了我的范围。所以它总是试图过滤列“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的偏移。如果要对一列应用筛选器,则必须首先清除现有筛选器

你调整过的代码是这样的,它将只对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

您还可以将过滤器应用于所有列,并正确指定字段条件

试试这个

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

sktneer…非常感谢。有两件事我不知道/没想到before@Cooper5114不客气!很高兴你觉得它有用。如果这解决了您的问题,请花一分钟接受答案,将您的问题标记为已解决。:)