查找另一个工作表匹配键中的所有行

时间:2019-05-27 11:53:48

标签: excel

我在Excel工作簿中有两张纸,一张叫做“客户”,另一张叫做“产品”:

Customer

Product

我希望在“客户”表中创建一个查找表,例如在查找表上方的单元格G2中,我输入了customer_id,希望在该表中找到名为“产品”的所有行。因此,例如,如果我在G2中输入“ 1”,我将在工作表“ Product”中获得两个匹配的行。我尝试使用VLOOKUP,但我总是只匹配第一行,而没有其他匹配。

编辑: 在查找表中,您只会在名为“产品”的工作表中获取信息:如果您输入“ 1”,则会从“产品”工作表中获得第2行和第3行。在名为“客户”的工作表中,每个customer_id的Customer_id只有一行,而在名为“产品”的工作表中,每个customer_id可以有很多行

2 个答案:

答案 0 :(得分:1)

您的数据透视表源数据将作为您的产品表: enter image description here

创建数据透视表,并在设置中使用“客户字段”进行过滤部分: enter image description here

只需手动更改单元格B2中的编号,就会返回与该客户ID相关的产品。

注意::如果您在产品表中输入了不是的Customer_id,则会弹出一个警告消息框,警告您有关此问题。因此,如果您在任何时候都看到警报,则表明customer_id在PRoduct Sheet中有0条记录:)

希望这会有所帮助

答案 1 :(得分:0)

您可以尝试Workbook_Change:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim wsCus As Worksheet, wsPro As Worksheet
    Dim LastRow As Long, ID As Long, i As Long
    Dim arr As Variant
    Dim FullRecord

    With ThisWorkbook
        Set wsCus = .Worksheets("Customer")
        Set wsPro = .Worksheets("Product")
    End With

    If Not Intersect(Target, wsCus.Range("G2")) Is Nothing And Target.Count = 1 Then

        ID = Target.Value

        With wsPro

            LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

            arr = .Range("A2:A" & LastRow)

            For i = LBound(arr) To UBound(arr)

                If arr(i, 1) = ID Then

                    If FullRecord = "" Then
                        FullRecord = i + 1
                    Else
                        FullRecord = FullRecord & ", " & i + 1
                    End If

                End If

            Next i

            Application.EnableEvents = False
                If FullRecord = "" Then
                    wsCus.Range("I2").Value = "No match found"
                Else
                    wsCus.Range("I2").Value = "Matched lines for ID (" & ID & "): " & FullRecord
                End If
            Application.EnableEvents = True

        End With

    End If

End Sub

说明:

  1. 打开工作簿后,请按ALT和F11打开VBA编辑器。
  2. 双击左上方的“客户”表。
  3. 选择工作表。
  4. 更改事件。
  5. 粘贴图片中的代码。
  6. 然后将工作簿另存为Excel Macro-Enabled Workbook,关闭VBA编辑器并更改G2值。

步骤:

enter image description here

结果:

查找匹配项

enter image description here

没有匹配项

enter image description here