我正在尝试使用过滤器选项来过滤我的范围。
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=11, Criteria1:="yes"
基本上,这将过滤列 U 为是。
我拥有的是一个下拉列表,我需要它来查找该条目在该范围内的哪个字段。例如,U 列包含名称“John”
因此,如果我从下拉列表中选择 John,它将需要查看范围,找到 John 列,然后返回它是什么字段(在本例中为 11)
在 T 列中是姓名 Ben。如果我从下拉列表中选择 Ben,那么它将执行相同的过滤器,但该字段将为 10。
无论如何我可以根据从下拉列表中选择的内容来计算字段编号吗?
Sub Report()
Dim oSht As Worksheet
Dim lastRow As Long
Dim LastCol As Long
Dim nice As Long
Dim strSearch As String
Dim aCell As Range
Set oSht = Sheets("Overview")
lastRow = oSht.Range("B" & Rows.Count).End(xlUp).Row
With ActiveSheet.Shapes("Dropdown").ControlFormat
strSearch = .List(.Value)
End With
MsgBox strSearch
Set aCell = oSht.Range("K2:Z100").Find(What:=strSearch, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
nice = aCell.Column - 10
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=nice, Criteria1:="yes"
End If
End Sub
所以这就是我让它工作的方式。现在我只需要知道如何将下拉列表中的选项存储为变量并设置一个宏来清除过滤器,然后就可以了!PS - 无法让最后一列查找位工作,因为它一直说“需要对象”,所以手动设置它