После матча определите новую характеристику - PullRequest
0 голосов
/ 09 июля 2019

У меня есть два листа, которые я хочу соединить.Характеристики соединения можно найти в листе «Тип» в столбце А и в листе «Данные» в столбце J.

Существует ли вероятность того, что после обнаружения совпадения новая характеристика будетопределяется в листе «Данные» в столбце B тем же процессом?

Поскольку мой английский не самый лучший, вот иллюстрация того, что я хочу сделать в листе «Данные»:

совпадение найдено в столбце J: match found

В столбце B теперь указывается, что значение обновляется в столбце L .: Column B now specifies that the value is updated in column L.

Sub test()

lastrow = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
lastRow2 = Worksheets("Type").Cells(Rows.Count, 1).End(xlUp).Row


Set sh = Sheets("Data")
Set sb = Sheets("Type")

With sh

For j = 2 To lastrow
found = False
    i = 2
    Do Until i = lastRow2
            If Sheets("Data").Range("J" & j).Value = Sheets("Type").Range("A" & i).Value Then

'Something should happen here

            Sheets("Data").Range("L" & j).Value = Sheets("Type").Range("D" & i).Value
        End If
        i = i + 1
    Loop

Next j
End With

End Sub

Есть ли способ выполнить этофункция без дополнительного вспомогательного столбца?

Альтернативой может быть запуск Vlookup с листа «Данные» на лист «Тип»:

Данные листа до: Sheet

Тип листа до: Sheet

Тип листа после того, как я использую VLOOKUP и вставляю столбец B, основываясь на выводах в столбце J: Sheet Type after I use VLOOKUP and insert Column B based on the findings in Column J

Данные листа после запуска следующегокод ниже, чтобы сопоставить новый столбец E в «Type» с Coстолбец B в разделе «Данные» для вставки значений из столбца D (лист «Тип») в столбец L в данных листа: 4

Код для последнего шага будет выглядеть следующим образом:

lastrow = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row
lastRow2 = Worksheets("Type").Cells(Rows.Count, 1).End(xlUp).Row


Set sh = Sheets("Data")
Set sb = Sheets("Type")

With sh

For j = 2 To lastrow

    i = 2
    Do Until i = lastRow2
    If Sheets("Data").Range("B" & j).Value = Sheets("Type").Range("E" & i).Value Then
            Sheets("Data").Range("L" & j).Value = Sheets("Type").Range("D" & i).Value
        End If
        i = i + 1
    Loop

Next j
End With

Есть ли какой-нибудь способ избежать Vlookup заранее, чтобы улучшить производительность?

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