Цель этого кода - выполнить итерацию по столбцу в 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 ответ1

0

Чтобы указать строку и столбец диапазона в виде чисел, вы должны использовать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .