【问题标题】:VBA: Filter table data based on drop down selectionVBA:根据下拉选择过滤表数据
【发布时间】:2015-07-23 15:39:38
【问题描述】:

我想根据下拉列表选择过滤表 C 列。 我有更多行,我可以从下拉列表中选择国家代码。

我想根据国家代码选择过滤我的表格。

例如:

第一行:选择“54”国家代码

选择第二行“24”国家代码

等等……

另一个选项卡上的表格将按所选国家代码“54”、“24”进行过滤。

您能帮我解决一下吗?

谢谢你:)

【问题讨论】:

  • 您是否尝试过制作自己的 VBA 解决方案?请向我们展示您迄今为止所做的尝试,以及该尝试的哪一部分失败了。你付出的努力越多,这里愿意帮助你的人就越多。
  • 将表格的单元格设置为喜欢=If(A1=54,[data to show for 54],[data to show if 24])会不会太过分了。
  • Sub FilterRangeCriteria() Dim vCrit As Variant Dim wsFiltered As Worksheet Dim wsSelection As Worksheet Dim rngCrit As Range Dim rngOrders As Range Dim Lastrow As Integer Set wsFiltered = Worksheets("S") ' 我要过滤此选项卡带有“中心信息”选择 Set wsSelection = Worksheets("Centre Information") Set rngOrders = wsFiltered.Range("b:b") '我要过滤此列 Lastrow = Worksheets("Centre Information").Cells( Rows.Count, 2).End(xlUp).Row myrange = ("b3:b" & Lastrow) ' 从 B3 到最后一行的值:这将是过滤器数据 Set rngCrit = wsSelection.Range(myrange
  • 使用数据透视表....?

标签: vba excel


【解决方案1】:
Sub FilterRangeCriteria()
Dim vCrit As Variant
Dim wsFiltered As Worksheet
Dim wsSelection As Worksheet
Dim rngCrit As Range
Dim rngOrders As Range
Dim Lastrow As Integer

'you need more variables to save the range in an array
Dim valArr As Variant
Dim cl As Range
Dim i As Integer

Set wsFiltered = Worksheets("S") ' I want to filter this tab with "Centre   Information" selection
Set wsSelection = Worksheets("Centre Information")
Set rngOrders = wsFiltered.Range("b:b") 'I want to filter this column

Lastrow = Worksheets("Centre Information").Cells(Rows.Count, 2).End(xlUp).Row
myrange = ("b3:b" & Lastrow) ' the value from B3 until last row: this will be the filter data
Set rngCrit = wsSelection.Range(myrange)

vCrit = rngCrit.Value

'I get error here: Autofilter method of range class failed

'Correction: Fill array
ReDim valArr(Lastrow - 3) 'define array size (first two rows are empty + considering the first array position starts with 0)
i = 0
For Each cl In rngCrit 'loop through range
    valArr(i) = "=" & cl 'filter for each value + operator
    i = i + 1
Next cl

'Correction: use array als range of numbers which shall be matched
rngOrders.AutoFilter _
    Field:=1, _
    Criteria1:=valArr, _
    Operator:=xlFilterValues

End Sub

评论:如果你想过滤一个范围,你可以使用自动过滤器提供一个数组,其中包含字符串格式的所有值。过滤数字需要一个运算符:例如“=”、“

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多