Страницы: 1
RSS
Сравнение двух пар столбцов в разных листах и вывод значений
 
Добрый день! Очень нужна помощь в написании макроса. На листе 1 есть данные в столбцах B и G, на листе 2 в столбцах A и B. Если значения B и G в одной строке из листа 1 совпадают со значениями A и B в любой другой, но одной строке из листа 2, то в лист 1 столбцы H и I надо вывести значения с листа 2 E и F (Например, на листе 1 во второй строке есть комбинация 26 и 2 в строке 10 и на листе 2  есть такая же комбинация в строке 15). Файл прикладываю. Итоговый желаемый результат указан на листе3.
Возможно, придется работать с большим объемом данных, поэтому нужно, чтобы макрос быстро работал. Спасибо!
 
brana67, так?
Код
Sub csg()
Dim LR As Long, LR1 As Long, i As Long, j As Long
Application.ScreenUpdating = False
LR = Cells(Rows.Count, "B").End(xlUp).Row
LR1 = Sheets(2).Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To LR
     For j = 2 To LR1
         If Cells(i, 2) = Sheets(2).Cells(j, 2) And Sheets(1).Cells(i, 6) = Sheets(2).Cells(j, 1) Then
            Cells(i, 7) = Sheets(2).Cells(j, 5)
            Cells(i, 8) = Sheets(2).Cells(j, 6)
            Exit For
          End If
      Next
   Next
 Application.ScreenUpdating = True
End Sub
Изменено: casag - 16.07.2019 18:58:23
 
А есть ли какой-нибудь более быстрый способ? На больших данных макрос долго работает.
 
brana67, а что делать с дублями? у вас комбинации 1 - 23 и 5 - 25 встречаются по два раза - см. вариант на PQ:
Код
let
    tbl1=Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    tbl2=Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    join=Table.NestedJoin(tbl1,{"F","B"},tbl2,{"A","B"},"Data",JoinKind.LeftOuter),
    result = Table.ExpandTableColumn(join, "Data", {"E", "F"}, {"Data.E", "Data.F"})
in
    result
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, дублей быть не должно, в таблице опечатка видимо. Нужно именно vba, и итоговая таблица как на листе 3. Желательно, с помощью словаря.
Прикрепляю правильный файл
Страницы: 1
Наверх