宏根据特定单元格值在多个条件上过滤数据表

时间:2018-06-07 16:21:53

标签: excel vba excel-vba filtering

我尝试记录一个宏来根据2个单元格的值过滤数据表。它只是第一次工作,因为VBA记录的是单元格值而不是单元格引用。我无法弄清楚如何更改代码以执行以下操作:

  1. 更改单元格值时更改过滤器选择
  2. 更改过滤器选择而不导航到包含数据表的工作表。
  3. 参考单元所在的工作表被称为" Cost Estimator"并且带有数据表的工作表是" AR_BOM"

    表名是" BOM_Table"

    以下是录制的代码:

    Sub Filter_AR_BOM()
    '
    ' Filter_AR_BOM Macro
    '
    
    '
        Range("E25").Select
        Selection.Copy
        Sheets("AR_BOM").Select
        ActiveSheet.ListObjects("BOM_Table").Range.AutoFilter Field:=4, Criteria1:= _
            "Line 11"
        Sheets("Cost Estimator").Select
        Range("J10").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("AR_BOM").Select
        ActiveSheet.ListObjects("BOM_Table").Range.AutoFilter Field:=13, Criteria1 _
            :="12197118"
        Sheets("Cost Estimator").Select
    End Sub
    

    非常感谢任何帮助。我已经在论坛上尝试了不同的事情将近2天,而且似乎没有取得任何进展。我是一个极端的宏/ vba新手,所以我知道这对任何事都没有帮助。

1 个答案:

答案 0 :(得分:1)

至少这是一个开始。代码需要进入Cost Estimator工作表模块

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$E$25" Or Target.Address = "$J$10" Then
    Sheets("AR_BOM").ListObjects("BOM_Table").Range.AutoFilter Field:=4, Criteria1:=Range("E25").value
    Sheets("AR_BOM").ListObjects("BOM_Table").Range.AutoFilter Field:=13, Criteria1:=Range("J10").value
End If

End Sub