Всем привет! Имеется макрос, который путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. Файл с макросом во вложении.
[vba]
Код
Sub shabloncopy() Dim r As Range, lr As Long, i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Sheets("Исходные данные") For Each r In Selection.Areas lr = .Cells(Rows.Count, 12).End(xlUp)(2, 1).Row i = r.Rows.Count .Cells(lr, 10).Resize(i).Value = r(1, 9).Resize(i).Value .Cells(lr, 12).Resize(i).Value = r(1, 2).Resize(i).Value .Cells(lr, 17).Resize(i).Value = r(1, 3).Resize(i).Value Next End With End Sub
[/vba]
Необходимо: 1. Если в листе "Расшифровка" в столбце J (10 столбец) значение не равно нулю (т.е. столбец не пустой, прописана какая-либо цифра), То это значение прописывалось бы в листе "Исходные данные" в столбце J (10 столбец) после первого копированного значения из листа "Расшифровка" из столбца I (9 столбец) в лист "Исходные данные" в столбце J (10 столбец), вместе с остальными значениями из других столбцов. 2. При выполнении первого условия, в листе "Исходные данные" в столбце N (14 столбец), автоматом прописывалось значение "1234567".
В файле в листе "Исходные данные" я написал как должно получиться и выделил цветом. У кого какие мысли, прошу помочь!
Всем привет! Имеется макрос, который путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. Файл с макросом во вложении.
[vba]
Код
Sub shabloncopy() Dim r As Range, lr As Long, i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Sheets("Исходные данные") For Each r In Selection.Areas lr = .Cells(Rows.Count, 12).End(xlUp)(2, 1).Row i = r.Rows.Count .Cells(lr, 10).Resize(i).Value = r(1, 9).Resize(i).Value .Cells(lr, 12).Resize(i).Value = r(1, 2).Resize(i).Value .Cells(lr, 17).Resize(i).Value = r(1, 3).Resize(i).Value Next End With End Sub
[/vba]
Необходимо: 1. Если в листе "Расшифровка" в столбце J (10 столбец) значение не равно нулю (т.е. столбец не пустой, прописана какая-либо цифра), То это значение прописывалось бы в листе "Исходные данные" в столбце J (10 столбец) после первого копированного значения из листа "Расшифровка" из столбца I (9 столбец) в лист "Исходные данные" в столбце J (10 столбец), вместе с остальными значениями из других столбцов. 2. При выполнении первого условия, в листе "Исходные данные" в столбце N (14 столбец), автоматом прописывалось значение "1234567".
В файле в листе "Исходные данные" я написал как должно получиться и выделил цветом. У кого какие мысли, прошу помочь!maxexcel
МУЖИКИ! ЗАБЫЛИ ПЕРВОЕ СООБЩЕНИЕ, ТАМ Я СЛИШКОМ НАМУДРИЛ. Так вот, первый макрос, путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. [vba]
Код
Sub shabloncopy() Dim r As Range, lr As Long, i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Sheets("Исходные данные") For Each r In Selection.Areas lr = .Cells(Rows.Count, 12).End(xlUp)(2, 1).Row i = r.Rows.Count .Cells(lr, 10).Resize(i).Value = r(1, 9).Resize(i).Value .Cells(lr, 12).Resize(i).Value = r(1, 2).Resize(i).Value .Cells(lr, 17).Resize(i).Value = r(1, 3).Resize(i).Value .Cells(lr, 22).Resize(i).Value = r(1, 10).Resize(i).Value Next End With End Sub
[/vba] Ниже алгоритм второго макроса: 1. Работает цикл на первые где-то 200 строк или диапазон , который (или в котором) макрос понимает что в ячейках столбца V есть какое-либо значение. 2. После того как макрос понял, что в ячейках столбца V есть значение, то вставляются пустые строки, после строки в котором находятся эти значения. 3. Затем копируются эти же значения из ячеек столбца V в ячейки Столбца J. 3.1. И копируются значения из ячеек строки которая выше по столбцам L,Q в пустую строку которая получилась в результате выполнения второго этапа макроса). 4. Как скопировались значения в свои ячейки, автоматом вставляется "1234567" в ячейки столбца N. 5. Удаляются все значения из ячеек столбца V. (я не профессионал, но возможно здесь может получиться цикличность и VBA будет ругаться. Тогда этот этап можно вообще исключить).
В приложенном файле, я тоже все расписал и показал по этапам, выделил цветом. Думаю должно быть понятно. В принципе этапы 3.1. и 4. это "хотелки", которые можно и не учитывать, но все-таки было бы прикольно)))))) [moder]Лена и Маняша - не забывайте первое сообщение
МУЖИКИ! ЗАБЫЛИ ПЕРВОЕ СООБЩЕНИЕ, ТАМ Я СЛИШКОМ НАМУДРИЛ. Так вот, первый макрос, путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. [vba]
Код
Sub shabloncopy() Dim r As Range, lr As Long, i As Long If TypeName(Selection) <> "Range" Then Exit Sub With Sheets("Исходные данные") For Each r In Selection.Areas lr = .Cells(Rows.Count, 12).End(xlUp)(2, 1).Row i = r.Rows.Count .Cells(lr, 10).Resize(i).Value = r(1, 9).Resize(i).Value .Cells(lr, 12).Resize(i).Value = r(1, 2).Resize(i).Value .Cells(lr, 17).Resize(i).Value = r(1, 3).Resize(i).Value .Cells(lr, 22).Resize(i).Value = r(1, 10).Resize(i).Value Next End With End Sub
[/vba] Ниже алгоритм второго макроса: 1. Работает цикл на первые где-то 200 строк или диапазон , который (или в котором) макрос понимает что в ячейках столбца V есть какое-либо значение. 2. После того как макрос понял, что в ячейках столбца V есть значение, то вставляются пустые строки, после строки в котором находятся эти значения. 3. Затем копируются эти же значения из ячеек столбца V в ячейки Столбца J. 3.1. И копируются значения из ячеек строки которая выше по столбцам L,Q в пустую строку которая получилась в результате выполнения второго этапа макроса). 4. Как скопировались значения в свои ячейки, автоматом вставляется "1234567" в ячейки столбца N. 5. Удаляются все значения из ячеек столбца V. (я не профессионал, но возможно здесь может получиться цикличность и VBA будет ругаться. Тогда этот этап можно вообще исключить).
В приложенном файле, я тоже все расписал и показал по этапам, выделил цветом. Думаю должно быть понятно. В принципе этапы 3.1. и 4. это "хотелки", которые можно и не учитывать, но все-таки было бы прикольно)))))) [moder]Лена и Маняша - не забывайте первое сообщениеmaxexcel
pechkin, Супер, спасибо, то что нужно! Заметил вот какую штуку, я решил добавить позиций в листе "Расшифровка" ближе к сотне. И после 61 строки (это если из листа "Расшифровка") или 84 строки (это если из листа "Исходные данные") макрос перестал добавлять пустые строки и вставлять автоматом значения "1234567". Файл прилагаю.
pechkin, Супер, спасибо, то что нужно! Заметил вот какую штуку, я решил добавить позиций в листе "Расшифровка" ближе к сотне. И после 61 строки (это если из листа "Расшифровка") или 84 строки (это если из листа "Исходные данные") макрос перестал добавлять пустые строки и вставлять автоматом значения "1234567". Файл прилагаю.maxexcel