【问题标题】:VBA Autofilter with dynamic field column具有动态字段列的 VBA 自动过滤器
【发布时间】:2019-12-30 23:31:02
【问题描述】:

我编写了一个按选定单元格值进行过滤的代码,以创建一个快速访问工具栏图标并加快过滤速度。当过滤器从 A 列开始时,它工作得很好。但是一些过滤器从 B 或 C 列开始......并且该值在另一列中被过滤,跳过完全相同数量的没有过滤器的空白列。你们知道怎么解决吗?如何让VBA返回字段号?

Sub Filtro_Valor_Célula()
'Filtra a coluna pelo valor da célula selecionada
'


    Valor = ActiveCell.Value

    ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=ActiveCell.Column, Criteria1:=Valor


End Sub

【问题讨论】:

    标签: excel vba autofilter


    【解决方案1】:

    我无法理解您的问题,但我认为您的情况如下所示:

    在此示例中,如果运行给定的代码,我们将在 E 列而不是 C 列进行过滤。

    这是因为所选单元格在第 3 列中。但我们要过滤的字段不是自动过滤器中的第三个字段——它是自动过滤器中的第一个字段。看起来Field:=ActiveCell.Column 的那段代码对我们来说是不正确的。

    试试这个:

    Sub Filtro_Valor_Célula()
    'Filtra a coluna pelo valor da célula selecionada
    '
    
    
        Valor = ActiveCell.Value
        FieldToFilter= ActiveCell.Column - ActiveSheet.AutoFilter.Range.Column + 1
    
        ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=FieldToFilter, Criteria1:=Valor
    
    
    End Sub
    

    这里我们取选定列的位置 (ActiveCell.Column) 并减去我们的 AutoFilter 开始的列号。我们希望从 1 而不是零开始计数,因此我们需要在结果中加 1。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-10
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-14
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多