我有两个电子表格,第一个电子表格只有1列,其中有user_id
。
第二个具有customer_id
(与第一张纸中的user_id
相同)和status
。
如何找到第二个电子表格中第一个电子表格中与ID匹配的所有行,并将该行的状态输出到第三个电子表格中?
示例数据:
电子表格1:
电子表格2:
第一列
第二列
我不确定,但是我认为是这样的:
=VLOOKUP(B1,Sheet2!A:B,2,FALSE)
它正在经历一种状态,而不是期望的状态。
答案 0 :(得分:1)
首先,可以使用Index/Match
语句来完成此操作,
=INDEX(Sheet1!$A:$B,MATCH(Sheet2!$A1,Sheet1!$A:$A,0),2)
将工作表和范围更改为正确的位置。这会将工作表2(客户ID)中工作表2的第一个条目匹配工作表1中的A:A(用户ID)范围,然后在匹配时从工作表1的列B(状态)返回值。您可以将其放在工作表3中,然后向下拖动填充手柄以覆盖工作表2的所有内容。
但是,如果我正确阅读了该问题,则可能会选择多个匹配项。如果是这样,最好通过vba循环来完成。让我知道是否要我调查一下。
答案 1 :(得分:0)
我以前做过类似的事情,如果您想通过VBA完成它,它将在其中逐行循环直到定义的最后一行,将某些列相互比较,然后将行复制粘贴到新表中。您绝对可以通过更改一些内容来使用下面的代码。
Sub finddata()
Dim s As Worksheet
Dim uniqueId As String
Dim finalrow As Long
Dim i As Long
Dim c As Long
Dim rngSearch As Range
Dim rngFound As Range
Dim finalcolumn As Long
Dim offset As Integer
Application.ScreenUpdating = True
uniqueId = Sheets("Data").Range("B2").Value
finalrow = Sheets("Data").Range("G100000").End(xlUp).Row
finalcolumn = Sheets("Data").Range("XFD1").End(xlToLeft).Column
offset = 3
Set s = Sheets("Data")
Set rngSearch = s.Range(s.Cells(2, 5), s.Cells(finalrow, 5))
Sheets("DataValidation").Range("A1:C100000").ClearContents
For i = 2 To finalrow
uniqueId = s.Cells(i, 2).Value
Set rngFound = rngSearch.Find(What:=uniqueId, LookIn:=xlValues, LookAt:=xlWhole)
If rngFound Is Nothing Then
s.Range(Cells(i, 1), Cells(i, 6)).Copy
Sheets("DataValidation").Range("A1048575").End(xlUp).offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats
End If
Next i
MsgBox "Done"
End Sub
答案 2 :(得分:-1)