Сбор значений нескольких столбцов в переменной строке - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь выяснить, как установить значение диапазона столбцов на одном листе равным значению диапазона столбцов на другом листе.Я не хочу копировать всю строку, я только нацеливаюсь на определенные столбцы, чтобы не перезаписывать важную информацию внутри других ячеек.

В настоящее время мой код начинается с верхней части листа 1 и переходит на нижнюю.,При каждом значении> 0 в столбце 4 выполняется поиск идентичного значения в столбце 4 листа 2. Если совпадение найдено, я хочу скопировать значения из столбца 10-13 в строке x таблицы 1 в столбец 10-13 столбца yСтрока листа 2.

Я могу выполнить эту работу, сопоставив значение в каждом столбце индивидуально, но не могу найти подходящий метод для назначения значения для диапазона столбцов.Первая строка кода - это то, что у меня сейчас работает.Во второй строке я пытаюсь скопировать диапазон значений столбца.

ws2.Cells(y, 4).Value = ws1.Cells(x, 4).Value
ws2.Range(y, 10:13).Value = ws1.Range(x, 10:13).Value

Я пытался использовать метод Union (), но, возможно, я не уверен, как реализовать его в этой ситуации.Ниже остальная часть моего кода.

Sub Upload()

Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim ws1LastRow As Long, ws2LastRow As Long
Dim ws1Row As Long, ws2Row As Long
Dim FindRow2 As Range

Application.ScreenUpdating = False

Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("Sheet1")

Set wb2 = Application.Workbooks.Open("Sheet Address")
Set ws2 = wb2.Worksheets("Master")

ws1LastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
ws2LastRow = ws2.Cells(Rows.Count, "A").End(xlUp).Row

For ws1Row = 2 To ws1LastRow

    Do While ws1.Cells(ws1Row, 4) <> ""

        ws2.Range("D:D").Find(What:=ws1.Cells(ws1Row, 4).Text, _
        LookIn:=xlValues).Select

        r = ActiveCell.Row  

        ws2.Cells(r, "B").Value = ws1.Cells(ws1Row, "B").Value

        ws1Row = ws1Row + 1

    Loop   

Next

End Sub

1 Ответ

0 голосов
/ 30 января 2019

Range.Resize(Rows, Columns)


ws2.Range("J" & y).Resize(, 3).Value = ws1.Range("J" & x).Resize(, 3).Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...