Сравните данные в двух таблицах и выведите данные в третью таблицу - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть две таблицы, в первой просто 1 столбец с user_id.Второй имеет customer_id (что совпадает с user_id на первом листе) и status.

Как найти все строки, которые соответствуют идентификатору из первой электронной таблицы во второй электронной таблицеи вывести состояние этой строки в третью электронную таблицу?

Пример данных:

Электронная таблица 1:

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

Электронная таблица 2:

Первый столбец

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

Второйстолбец

  • статус
  • активный
  • отложенный платеж
  • активный
  • отменен
  • активный

Я не совсем уверен, но я думаю, что-то вроде этого:

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

Это тянет через статус, но не то, что ожидается.

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Для начала это можно сделать с помощью оператора Index/Match, например, так:

=INDEX(Sheet1!$A:$B,MATCH(Sheet2!$A1,Sheet1!$A:$A,0),2)

Где вы меняете свои листы и диапазоны на правильные.Это будет соответствовать первой записи из листа 2 (идентификатор клиента) в диапазоне A: A (идентификатор пользователя) на листе 1, а затем будет возвращать значение из столбца B листа 1 (состояние), когда есть совпадение.Вы можете поместить это на лист 3 и перетащить ручку заливки вниз, чтобы покрыть весь лист 2.

Однако, если я прочту вопрос прямо, может быть вариант, что возможны несколько совпадений.Если это так, это лучше сделать с помощью цикла VBA.Дайте мне знать, если вы хотите, чтобы я изучил это.

0 голосов
/ 24 сентября 2019

Я делал нечто подобное раньше, если вы хотите, чтобы это было сделано через 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
0 голосов
/ 24 сентября 2019

Вы можете сравнить, как показано на скриншоте ниже.

введите описание изображения здесь

Вы получите свой результат, как показано на втором скриншоте.

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...