如何使用来自特定范围的值自动过滤列
How to autofilter a column with values coming from a specific range
大家好,我刚开始学习,希望你能帮我解决这个问题VBA :)
我需要自动筛选 excel sheet 的列,其中的值来自另一个 sheet 的范围。有点复杂,这个范围是动态的,可以包括代码应该采用并用于自动过滤的不同数字行(每个单元格包含不同的文本)
这是我写的
Sub Filtrapp()
Worksheets("Applicazioni").Activate
Range("A8:C1000").AutoFilter 1, Worksheets("RecordTabella").Range("C2:C5").Value
End Sub
这里的问题是过滤器只采用最后一个单元格“C5”的值,而不采用 C2、3、4 的值
我也试着让它动态化,但每次都给我错误,希望有人能帮忙
提前致谢
你的意思是这样的吗?
这将按 >10 和 <20 的值进行过滤
Worksheets("Applicazioni").Range("C1").AutoFilter Field:=3, Criteria1:=">10", _
Operator:=xlAnd, Criteria2:="<20"
使用数组作为条件过滤范围
Sub Filtrapp()
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Worksheets("RecordTabella")
Dim srg As Range
Dim srCount As Long
With sws.Range("C2")
Dim lCell As Range: Set lCell = .Resize(sws.Rows.Count - .Row + 1) _
.Find("*", , xlFormulas, , , xlPrevious)
If lCell Is Nothing Then Exit Sub ' empty criteria column range
srCount = lCell.Row - .Row + 1
Set srg = .Resize(srCount)
End With
Dim Data As Variant ' 2D one-based
If srCount = 1 Then ' one cell (row)
ReDim Data(1 To 1, 1 To 1): Data(1, 1).Value = srg.Value
Else ' multiple cells (rows)
Data = srg.Value
End If
Dim Arr() As String: ReDim Arr(1 To srCount) ' 1D one-based
Dim r As Long
For r = 1 To srCount
Arr(r) = Data(r, 1)
Next r
Dim dws As Worksheet: Set dws = wb.Worksheets("Applicazioni")
If dws.FilterMode Then dws.ShowAllData
Dim drg As Range: Set drg = dws.Range("A8:C1000")
drg.AutoFilter 1, Arr, xlFilterValues
End Sub
大家好,我刚开始学习,希望你能帮我解决这个问题VBA :)
我需要自动筛选 excel sheet 的列,其中的值来自另一个 sheet 的范围。有点复杂,这个范围是动态的,可以包括代码应该采用并用于自动过滤的不同数字行(每个单元格包含不同的文本)
这是我写的
Sub Filtrapp()
Worksheets("Applicazioni").Activate
Range("A8:C1000").AutoFilter 1, Worksheets("RecordTabella").Range("C2:C5").Value
End Sub
这里的问题是过滤器只采用最后一个单元格“C5”的值,而不采用 C2、3、4 的值 我也试着让它动态化,但每次都给我错误,希望有人能帮忙
提前致谢
你的意思是这样的吗?
这将按 >10 和 <20 的值进行过滤
Worksheets("Applicazioni").Range("C1").AutoFilter Field:=3, Criteria1:=">10", _
Operator:=xlAnd, Criteria2:="<20"
使用数组作为条件过滤范围
Sub Filtrapp()
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim sws As Worksheet: Set sws = wb.Worksheets("RecordTabella")
Dim srg As Range
Dim srCount As Long
With sws.Range("C2")
Dim lCell As Range: Set lCell = .Resize(sws.Rows.Count - .Row + 1) _
.Find("*", , xlFormulas, , , xlPrevious)
If lCell Is Nothing Then Exit Sub ' empty criteria column range
srCount = lCell.Row - .Row + 1
Set srg = .Resize(srCount)
End With
Dim Data As Variant ' 2D one-based
If srCount = 1 Then ' one cell (row)
ReDim Data(1 To 1, 1 To 1): Data(1, 1).Value = srg.Value
Else ' multiple cells (rows)
Data = srg.Value
End If
Dim Arr() As String: ReDim Arr(1 To srCount) ' 1D one-based
Dim r As Long
For r = 1 To srCount
Arr(r) = Data(r, 1)
Next r
Dim dws As Worksheet: Set dws = wb.Worksheets("Applicazioni")
If dws.FilterMode Then dws.ShowAllData
Dim drg As Range: Set drg = dws.Range("A8:C1000")
drg.AutoFilter 1, Arr, xlFilterValues
End Sub