【问题标题】:Macro to filter on an active cell from another worksheet用于过滤来自另一个工作表的活动单元格的宏
【发布时间】:2016-05-13 21:47:03
【问题描述】:

我正在尝试使用另一个工作表中的值过滤列。我希望能够从电子表格 S1 中单击 B 列中的任意位置,并能够使用 S1 中同一行中 A 列的值对电子表格 S2 中的 A 列进行过滤。使用下面的代码,我可以使用单元格 A3 中的值过滤 S2 中的 A 列。

Sheets("S2").Select
    ActiveCell.Select
    Selection.AutoFilter
ActiveSheet.Range("$A$1:$N$100").AutoFilter Field:=1, Criteria1:= _
    "=" & Sheets("S1").Range("A3"), Operator:=xlAnd

结束子

我希望能够使用下面的代码从ActiveCell 左侧的 A 列中选择值,而不是说 A3(如上面的代码)。

ActiveCell.Offset(0, -1).Select
        ActiveCell. Select
        Selection.Copy

我应该使用什么作为Criteria1:= 才能实现这一目标。使用 "=" & ActiveCell .Value, Operator:=x1And 可以让我使用 S2 中的值,但 "=" & Sheets("S1").Range(ActiveCell. Value), Operator:=x1And 会出错。

【问题讨论】:

    标签: vba excel filter worksheet


    【解决方案1】:

    ActiveCell 在整个Application 中是唯一的(Excel)

    因此,如果您想在工作表之间跳转并仍然引用 特定 Worksheet "ActiveCell"(即,如果该单元格是实际的 Application.ActiveCell特定 Worksheet 是活动的)那么您必须先将其存储在 Range 类型的变量中,然后才能离开该特定 Worksheet

    Dim MyActiveCell As Range
    
    Set MyActiveCell = ActiveCell ' store the reference to currently active cell of active sheet 
    
    Sheets("S2").Activate ' "jump" to another Worksheet
    
    Sheets("S2").Range("$A$1:$N$100").AutoFilter Field:=1, Criteria1:=MyActiveCell.Offset(0, -1).Value ' use MyActiveCell to reference the "active" cell previously stored
    

    但您也可以避免“跳表”:如果您当前活动的Worksheet 是您想要引用其ActiveCell 并将其用于“S2”Worksheet 过滤的那个,您可以去:

    Sheets("S2").Range("$A$1:$N$100").AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(0, -1).Value ', Operator:=xlAnd 
    

    并继续“停留”在活动工作表中,同时通过完全限定范围并在其上调用方法来“操作”其他工作表

    Sheets("MyOtherSheet").Range("MyOtherSheetRangeAddress").ProperRangeMethod
    

    【讨论】:

    • 不客气。如果我的回答满足了您的问题,请将其标记为已接受。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2018-08-05
    相关资源
    最近更新 更多