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