macros以从另一个工作表中的活动单元格上进行筛选

我正在尝试使用另一个工作表中的值过滤一列。 我希望能够在Spreadsheet S1的B列中的任意位置点击,并且能够使用S1中同一行的列A的值在Spreadsheet 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中select值,而不是说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)

所以如果你想在表单之间跳转,并且仍然引用一个特定的 Worksheet "ActiveCell" (即,如果该特定的 Worksheet是活动的单元格,那么该单元格将是实际的Application.ActiveCell ),那么你必须首先将它存储在一个Rangetypes的variables在离开特定的 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过滤的Worksheet ,则可以执行以下操作:

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

并在活动表中“继续”,而在其他表单上进行“表演”时,只需完全限定范围和调用方法即可

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