Я все делаю без этих массивов, вложенными циклами и логическими операторами, обычно таблицу закидываю в переменную для работы кода. Не понимаю вообще зачем массивы нужны. Еще For Each...Next удобная штука.
@@evgeniyatim3976 Sub КопияСП3() Dim z, x, v, y As Long v = ThisWorkbook.Worksheets("КП").Range("D14").End(xlDown).Row y = ThisWorkbook.Worksheets("СП Покупателю").Range("B5").End(xlDown).Row ThisWorkbook.Worksheets("КП").Activate For z = 5 To y Range("D15").Activate For x = 15 To v If ActiveCell.Value ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 2) Then ActiveCell.Offset(1, 0).Activate End If If ActiveCell.Value = ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 2) Then ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 8) = ActiveCell.Offset(0, 1) End If Next Next End Sub Это аналог ВПР на VBA с перебором ячеек двух таблиц двумя циклами. Метод End(xlDown) определяет нижние границы таблиц. Логический оператор If забирает значения когда выполняется условие =. Если условие не выполняется Offset переключается на следующую строку.
Очень хорошо, но для меня, как начинающего, некоторые моменты сложноваты. Например, что такое "максимальная вторая размерность"? Массив вроде как одномерный же? А если он многомерный, то размерностей больше, чем две.
Материал изложен в доступной для понимания форме. Спасибо.
Спасибо большое!
Очень познавательно!
Спасибо большое
Я все делаю без этих массивов, вложенными циклами и логическими операторами, обычно таблицу закидываю в переменную для работы кода. Не понимаю вообще зачем массивы нужны. Еще For Each...Next удобная штука.
Пришлите, пожалуйста, ваш пример. Мне очень интересно посмотреть.
@@evgeniyatim3976 Sub КопияСП3()
Dim z, x, v, y As Long
v = ThisWorkbook.Worksheets("КП").Range("D14").End(xlDown).Row
y = ThisWorkbook.Worksheets("СП Покупателю").Range("B5").End(xlDown).Row
ThisWorkbook.Worksheets("КП").Activate
For z = 5 To y
Range("D15").Activate
For x = 15 To v
If ActiveCell.Value ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 2) Then
ActiveCell.Offset(1, 0).Activate
End If
If ActiveCell.Value = ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 2) Then
ThisWorkbook.Worksheets("СП Покупателю").Cells(z, 8) = ActiveCell.Offset(0, 1)
End If
Next
Next
End Sub Это аналог ВПР на VBA с перебором ячеек двух таблиц двумя циклами. Метод End(xlDown) определяет нижние границы таблиц. Логический оператор If забирает значения когда выполняется условие =. Если условие не выполняется Offset переключается на следующую строку.
Очень хорошо, но для меня, как начинающего, некоторые моменты сложноваты. Например, что такое "максимальная вторая размерность"? Массив вроде как одномерный же? А если он многомерный, то размерностей больше, чем две.
Пришлите адрес почты и я направлю Вам информацию. Тут все легко
очень тихая запись