用于筛选另一个工作表中的活动单元格的宏
Macro to filter on an active cell from another worksheet
我正在尝试使用另一个工作表中的值对列进行筛选。我希望能够单击电子表格 S1 中 B 列中的任意位置,并能够使用 S1 中同一行中 A 列的值对电子表格 S2 中的 A 列进行过滤。使用下面的代码,我可以使用单元格 A3 中的值过滤 S2 中的 A 列。
Sheets("S2").Select
ActiveCell.Select
Selection.AutoFilter
ActiveSheet.Range("$A:$N0").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
会出错。
ActiveCell 在整个 Application
(Excel)
中是唯一的
所以如果你想在 sheets 之间跳转并且仍然引用 specific Worksheet
"ActiveCell"
(即单元格将是实际的 Application.ActiveCell
如果 specific 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:$N0").AutoFilter Field:=1, Criteria1:=MyActiveCell.Offset(0, -1).Value ' use MyActiveCell to reference the "active" cell previously stored
但您也可以避免 "sheet-jumping":如果您当前的活动 Worksheet
是您想要引用其 ActiveCell
并将其用于 "S2" Worksheet
过滤,可以去:
Sheets("S2").Range("$A:$N0").AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(0, -1).Value ', Operator:=xlAnd
并在活动 sheet 中继续 "staying",而在其他 sheet 中继续 "acting",只需完全限定范围并在其上调用方法
Sheets("MyOtherSheet").Range("MyOtherSheetRangeAddress").ProperRangeMethod
我正在尝试使用另一个工作表中的值对列进行筛选。我希望能够单击电子表格 S1 中 B 列中的任意位置,并能够使用 S1 中同一行中 A 列的值对电子表格 S2 中的 A 列进行过滤。使用下面的代码,我可以使用单元格 A3 中的值过滤 S2 中的 A 列。
Sheets("S2").Select
ActiveCell.Select
Selection.AutoFilter
ActiveSheet.Range("$A:$N0").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
会出错。
ActiveCell 在整个 Application
(Excel)
所以如果你想在 sheets 之间跳转并且仍然引用 specific Worksheet
"ActiveCell"
(即单元格将是实际的 Application.ActiveCell
如果 specific 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:$N0").AutoFilter Field:=1, Criteria1:=MyActiveCell.Offset(0, -1).Value ' use MyActiveCell to reference the "active" cell previously stored
但您也可以避免 "sheet-jumping":如果您当前的活动 Worksheet
是您想要引用其 ActiveCell
并将其用于 "S2" Worksheet
过滤,可以去:
Sheets("S2").Range("$A:$N0").AutoFilter Field:=1, Criteria1:=ActiveCell.Offset(0, -1).Value ', Operator:=xlAnd
并在活动 sheet 中继续 "staying",而在其他 sheet 中继续 "acting",只需完全限定范围并在其上调用方法
Sheets("MyOtherSheet").Range("MyOtherSheetRangeAddress").ProperRangeMethod