比较两个电子表格中的数据并将数据输出到第三个电子表格

时间:2019-09-24 09:32:42

标签: excel

我有两个电子表格,第一个电子表格只有1列,其中有user_id。 第二个具有customer_id(与第一张纸中的user_id相同)和status

如何找到第二个电子表格中第一个电子表格中与ID匹配的所有行,并将该行的状态输出到第三个电子表格中?

示例数据:

电子表格1:

  • user_id
  • 1111
  • 2222
  • 3333
  • 4444
  • 5555

电子表格2:

第一列

  • customer_id
  • 1111
  • 2222
  • 3333
  • 4444
  • 5555

第二列

  • 状态
  • 活动
  • 待付款
  • 活动
  • 取消
  • 活动

我不确定,但是我认为是这样的:

=VLOOKUP(B1,Sheet2!A:B,2,FALSE)

它正在经历一种状态,而不是期望的状态。

3 个答案:

答案 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)

您可以像下面的屏幕截图所示进行比较。

enter image description here

您将获得第二个屏幕截图中所示的结果。

enter image description here