Здравствуйте, помогите написать макрос для выборки данных из одного листа и вставки в другой лист по условию.
Например, при вводе вручную на листе "Выборка" значения ячейки "IDДанные" требуется вставить в определенные ячейки столбца 5, столбца 6 и столбца 7 данные из определенных ячеек листа "Данные" и соответствующей строки.
Здравствуйте, помогите написать макрос для выборки данных из одного листа и вставки в другой лист по условию.
Например, при вводе вручную на листе "Выборка" значения ячейки "IDДанные" требуется вставить в определенные ячейки столбца 5, столбца 6 и столбца 7 данные из определенных ячеек листа "Данные" и соответствующей строки.
Суть в том, что для некоторых случаев не будет данных в листе "Данные" и придется их вносить руками, формулы полетят. Столбцы могут быть разными, это не важно, интересен сам пример макроса. Важно выбрать данные из определенных ячеек определенной строки листа "Данные" и вставить их в определенные ячейки той строки, куда руками ввели значение "IDДанные"
Суть в том, что для некоторых случаев не будет данных в листе "Данные" и придется их вносить руками, формулы полетят. Столбцы могут быть разными, это не важно, интересен сам пример макроса. Важно выбрать данные из определенных ячеек определенной строки листа "Данные" и вставить их в определенные ячейки той строки, куда руками ввели значение "IDДанные"ska
Private Sub Worksheet_Change(ByVal Target As Range) Dim idData As Range Set idData = Intersect(Target, Columns("b:b")) If Not idData Is Nothing Then Set shData = Sheets("Данные") For Each cell In idData If cell <> "" Then With shData r = .Columns(1).Find(cell, , xlValues, xlWhole).Row c = .Rows(1).Find("Столбец5", , xlValues, xlWhole).Column Cells(cell.Row, "e").Resize(, 3) = .Cells(r, c + 1).Resize(, 3).Value End With Else Cells(cell.Row, "e").Resize(, 3).ClearContents 'если не надо, убрать End If Next cell End If End Sub
[/vba]
ska, конкретно по Вашему примеру: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim idData As Range Set idData = Intersect(Target, Columns("b:b")) If Not idData Is Nothing Then Set shData = Sheets("Данные") For Each cell In idData If cell <> "" Then With shData r = .Columns(1).Find(cell, , xlValues, xlWhole).Row c = .Rows(1).Find("Столбец5", , xlValues, xlWhole).Column Cells(cell.Row, "e").Resize(, 3) = .Cells(r, c + 1).Resize(, 3).Value End With Else Cells(cell.Row, "e").Resize(, 3).ClearContents 'если не надо, убрать End If Next cell End If End Sub