Всем здравствуйте! Возможно, подобная тема уже была, но поиск не дал именно того, что мне нужно.
Задача состоит в следующем: Имеется лист "Навеска". На нём таблица, часть данных из которой (A4:B17) нужно перенести на лист "Результаты". Причём, перенести нужно в строку, которая располагается под уже заполненной. Затем один или несколько параметров на листе "Навеска" будут изменяться, после чего нужно сформировать следующую строку. И так далее.
Надеюсь, объяснил понятно. :-) Заранее спасибо за помощь!
Всем здравствуйте! Возможно, подобная тема уже была, но поиск не дал именно того, что мне нужно.
Задача состоит в следующем: Имеется лист "Навеска". На нём таблица, часть данных из которой (A4:B17) нужно перенести на лист "Результаты". Причём, перенести нужно в строку, которая располагается под уже заполненной. Затем один или несколько параметров на листе "Навеска" будут изменяться, после чего нужно сформировать следующую строку. И так далее.
Надеюсь, объяснил понятно. :-) Заранее спасибо за помощь!ASV007
Sub Макрос1() Dim lr As Long, arr As Variant, i As Long, j As Long With Worksheets("Навеска") ' загружаем данные в массив lr = .Cells(.Rows.Count, 1).End(xlUp).Row ' последняя заполненная строка на листе Навеска в первом столбце (без итогов) arr = .Range("A4:B" & lr) ' выбираем диапазон A4:B17 End With With Worksheets("Результаты") lr = .Cells(.Rows.Count, 4).MergeArea.End(xlUp).Row + 4 ' определяем последнюю заполненную строку в таблице в 4 столбце _ + 4 потому, что у Вас объединенная строка состоит из 4 строк 'заносим Цемент .Cells(lr, 4).MergeArea = arr(1, 1) .Cells(lr, 7).MergeArea = arr(1, 2) ' заносим ГЦ .Cells(lr, 8).MergeArea = arr(2, 1) .Cells(lr, 10).MergeArea = arr(2, 2) ' заносим "Добавку 1" .Cells(lr, 11).MergeArea = arr(3, 1) .Cells(lr, 13).MergeArea = arr(3, 2) ' далее в цикле с 14 столбца (N) заполняем оставшиеся ячейки во вставленной строке j = 14 For i = 4 To UBound(arr, 1) .Cells(lr, j) = arr(i, 1) ' заполняем марку .Cells(lr, j + 1) = arr(i, 2) ' заполняем % j = j + 2 ' плюс 2 столбца (т.е был N, стал P) Next i End With
[/vba]
ASV007, здравствуйте! Например, можно так: [vba]
Код
Sub Макрос1() Dim lr As Long, arr As Variant, i As Long, j As Long With Worksheets("Навеска") ' загружаем данные в массив lr = .Cells(.Rows.Count, 1).End(xlUp).Row ' последняя заполненная строка на листе Навеска в первом столбце (без итогов) arr = .Range("A4:B" & lr) ' выбираем диапазон A4:B17 End With With Worksheets("Результаты") lr = .Cells(.Rows.Count, 4).MergeArea.End(xlUp).Row + 4 ' определяем последнюю заполненную строку в таблице в 4 столбце _ + 4 потому, что у Вас объединенная строка состоит из 4 строк 'заносим Цемент .Cells(lr, 4).MergeArea = arr(1, 1) .Cells(lr, 7).MergeArea = arr(1, 2) ' заносим ГЦ .Cells(lr, 8).MergeArea = arr(2, 1) .Cells(lr, 10).MergeArea = arr(2, 2) ' заносим "Добавку 1" .Cells(lr, 11).MergeArea = arr(3, 1) .Cells(lr, 13).MergeArea = arr(3, 2) ' далее в цикле с 14 столбца (N) заполняем оставшиеся ячейки во вставленной строке j = 14 For i = 4 To UBound(arr, 1) .Cells(lr, j) = arr(i, 1) ' заполняем марку .Cells(lr, j + 1) = arr(i, 2) ' заполняем % j = j + 2 ' плюс 2 столбца (т.е был N, стал P) Next i End With