Есть код, аналог ВПРа... Который на текущий лист, подставляет данные в ячейку с другого, при изменении/вводе значения соседней ячейки той же строки.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCell As Range
On Error Resume Next
If Not Intersect(Target, Intersect(Me.UsedRange, Me.Columns(1))) Is Nothing And Target.Count = 1 Then
Set iCell = Worksheets("СТ-PL").Columns(1).Find(Target.Value)
If Not iCell Is Nothing Then
Target.Offset(i, 3).Value = iCell.Offset(i, 3).Value
Target.Offset(i, 4).Value = iCell.Offset(i, 4).Value
Else
Target.Offset(i, 3).Value = Empty
Target.Offset(i, 4).Value = Empty
End If
End If
End Sub
Помогите переделать макрос в обычный, запускаемый с кнопки, но чтобы подстановка срабатывала для всего столбца (значений около 1800) в циклах пока не очень силен. Я думаю, что пример не нужен. Нужно лишь адаптировать макрос на выполнение по кнопке для всех строк таблицы, начиная со второй. Можно определять последнюю, можно и для 2000 строк сделать и всё.
Sub test()
Application.ScreenUpdating = False
With Sheets("Данные_Расход")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
If Cells(i, 1) = 1 Then
Cells(i, 4) = "Один"
Cells(i, 5) = "Это цифра 1"
ElseIf Cells(i, 1) = 2 Then
Cells(i, 4) = "Два"
Cells(i, 5) = "Это цифра 2"
Else: Cells(i, 1) = 3
Cells(i, 4) = "Три"
Cells(i, 5) = "Это цифра 3"
End If
Next
End With
Application.ScreenUpdating = True
End Sub
Если данных гораздо больше тогда напиши, нужно будет переделать.