Копировать с листа 2 на лист 1 в зависимости от совпадения значений

Копировать с листа 2 на лист 1 в зависимости от совпадения значений

Цель этого кода — выполнить итерацию по столбцу в sheet1и проверить, соответствует ли каждое значение значениям в строке в sheet2. Если значение совпадает, скопируйте 5 строк информации из sheet2в в sheet1конкретную строку, в которой оно находится в данный момент времени.

Проблемы:

  • Ошибка 1004 в первой строке, где находится оператор if.
  • Я думаю, Next bчто также выдаст ошибку

Код VBA:

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
        Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
        Next b
        End If
Next i

решение1

Чтобы указать строку и столбец диапазона как числа, вы должны использовать Cellsвместо Range. Кроме того, ваша Next bстрока выдает ошибку, поскольку она находится внутри вложенного Ifоператора. Вместо этого вы должны использовать Exit Forдля выхода из цикла For и переместить за Next bпределы оператора If.

For i = 8 To 17
    For b = 7 To 21
        If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
            Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
            Exit For
        End If
    Next b
Next i

Связанный контент