Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
双击一个Excel工作表,根据双击的值筛选另一个工作表_Excel_Vba - Fatal编程技术网

双击一个Excel工作表,根据双击的值筛选另一个工作表

双击一个Excel工作表,根据双击的值筛选另一个工作表,excel,vba,Excel,Vba,我有两张工作表: “摘要”-包含客户信息,以及 “交易”-包含分配给唯一客户标识符的客户交易数据(多行) 我想做的是能够双击Sheet1-Summary中的唯一客户标识符,然后过滤Sheet2事务中的数据 这些表没有名称,作为数据放在工作表中。我已经厌倦了使用下面的代码,这些代码已经被列为解决类似问题的解决方案,但是,不断收到运行时错误“9”消息 希望有人能帮助这个初学者 If Target.Column = 1 Then Worksheets("Sheet1"

我有两张工作表:

  • “摘要”-包含客户信息,以及
  • “交易”-包含分配给唯一客户标识符的客户交易数据(多行)
  • 我想做的是能够双击Sheet1-Summary中的唯一客户标识符,然后过滤Sheet2事务中的数据

    这些表没有名称,作为数据放在工作表中。我已经厌倦了使用下面的代码,这些代码已经被列为解决类似问题的解决方案,但是,不断收到运行时错误“9”消息

    希望有人能帮助这个初学者

        If Target.Column = 1 Then
        Worksheets("Sheet1").ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:=Target.Value
        'amend the SheetName above and below and make sure your table name is correct too
        Worksheets("Sheet1").Select
        End If
    End Sub
    
    如果您的表“没有名称”,那么它们可能不是表,而只是数据范围。因此,您的
    .ListObjects()
    会有问题

    如果在VBA编辑器中将以下代码作为专用子代码应用于Sheet1,并假设Sheet2上的数据“表”从
    A1
    开始,并且
    a
    是要筛选的列,则这应该适用于您:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)
    On Error GoTo GetOut
    Application.EnableEvents = False
    cancel = True
    
    If ActiveCell.Value = "" Then
     MsgBox "No valid filter value selected"
     GoTo GetOut
    End If
    
       Sheet2.Range("A1").AutoFilter Field:=1, Criteria1:="" & ActiveCell.Value
       Application.Goto Sheet2.Range("A1")
    
    GetOut:
    Application.EnableEvents = True
    Exit Sub
    End Sub
    
    如果您的表“没有名称”,那么它们可能不是表,而只是数据范围。因此,您的
    .ListObjects()
    会有问题

    如果在VBA编辑器中将以下代码作为专用子代码应用于Sheet1,并假设Sheet2上的数据“表”从
    A1
    开始,并且
    a
    是要筛选的列,则这应该适用于您:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)
    On Error GoTo GetOut
    Application.EnableEvents = False
    cancel = True
    
    If ActiveCell.Value = "" Then
     MsgBox "No valid filter value selected"
     GoTo GetOut
    End If
    
       Sheet2.Range("A1").AutoFilter Field:=1, Criteria1:="" & ActiveCell.Value
       Application.Goto Sheet2.Range("A1")
    
    GetOut:
    Application.EnableEvents = True
    Exit Sub
    End Sub
    

    根据我从您的问题中了解到的情况,您要筛选的表位于表2中,因此您应该拥有:
    工作表(“表2”)…
    根据我从您的问题中了解到的情况,您要筛选的表位于表2中,因此您应该拥有:
    工作表(“表2”)…