【问题标题】:Macro to Filter Data table on multiple criteria based on specific cell value基于特定单元格值的多个条件过滤数据表的宏
【发布时间】:2018-11-17 15:37:39
【问题描述】:

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

  1. 当单元格值改变时改变过滤器选择
  2. 在不导航到包含数据表的工作表的情况下更改过滤器选择。

引用单元格所在的工作表称为“成本估算器”,带有数据表的工作表是“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 新手,所以我知道这没有任何帮助。

【问题讨论】:

  • 那么当两个单元格中的任何一个被更改时,您想重新运行过滤器吗?哪两个细胞? E25 和 J10?
  • 是的,当 2 个单元格(e25 和 J10)中的任何一个发生更改时,它将更新过滤器。

标签: vba excel filtering


【解决方案1】:

至少这是一个开始。代码需要进入成本估算表模块

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

【讨论】:

  • 好的,所以我将该代码粘贴到成本估算工作表模块中,但它仍然无法正常工作。我从开发者工具栏打开“宏”列表,运行宏,还是不行。
  • 该代码不会出现在宏列表中。它在您更改其中一个单元格时运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多