我在Excel工作簿中有两张纸,一张叫做“客户”,另一张叫做“产品”:
我希望在“客户”表中创建一个查找表,例如在查找表上方的单元格G2中,我输入了customer_id,希望在该表中找到名为“产品”的所有行。因此,例如,如果我在G2中输入“ 1”,我将在工作表“ Product”中获得两个匹配的行。我尝试使用VLOOKUP,但我总是只匹配第一行,而没有其他匹配。
编辑: 在查找表中,您只会在名为“产品”的工作表中获取信息:如果您输入“ 1”,则会从“产品”工作表中获得第2行和第3行。在名为“客户”的工作表中,每个customer_id的Customer_id只有一行,而在名为“产品”的工作表中,每个customer_id可以有很多行
答案 0 :(得分:1)
只需手动更改单元格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
说明:
步骤:
结果:
查找匹配项
没有匹配项