Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование данных в шаблон с условием ЕСЛИ-ТО - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных в шаблон с условием ЕСЛИ-ТО (Макросы/Sub)
Копирование данных в шаблон с условием ЕСЛИ-ТО
maxexcel Дата: Четверг, 15.10.2015, 22:02 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Всем привет! Имеется макрос, который путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. Файл с макросом во вложении.

[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".

В файле в листе "Исходные данные" я написал как должно получиться и выделил цветом.
У кого какие мысли, прошу помочь!
К сообщению приложен файл: 9658943.xlsm (43.8 Kb)


Сообщение отредактировал maxexcel - Четверг, 15.10.2015, 22:04
 
Ответить
СообщениеВсем привет! Имеется макрос, который путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа. Файл с макросом во вложении.

[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
Дата добавления - 15.10.2015 в 22:02
maxexcel Дата: Вторник, 20.10.2015, 20:38 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
МУЖИКИ! ЗАБЫЛИ ПЕРВОЕ СООБЩЕНИЕ, ТАМ Я СЛИШКОМ НАМУДРИЛ.
Так вот, первый макрос, путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа.
[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]Лена и Маняша - не забывайте первое сообщение
К сообщению приложен файл: 4899832.xlsm (50.6 Kb)


Сообщение отредактировал _Boroda_ - Среда, 21.10.2015, 16:56
 
Ответить
СообщениеМУЖИКИ! ЗАБЫЛИ ПЕРВОЕ СООБЩЕНИЕ, ТАМ Я СЛИШКОМ НАМУДРИЛ.
Так вот, первый макрос, путем выделения строк копирует данные из одного листа в другой лист (шаблон) в одной книге. Копируются данные из некоторых столбцов по выделенным строкам. И вставляются в определенные столбцы второго листа.
[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
Дата добавления - 20.10.2015 в 20:38
pechkin Дата: Среда, 21.10.2015, 16:43 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравствуйте! Посмотритте это...
К сообщению приложен файл: Cnhjrf.xls (76.5 Kb)
 
Ответить
СообщениеЗдравствуйте! Посмотритте это...

Автор - pechkin
Дата добавления - 21.10.2015 в 16:43
maxexcel Дата: Среда, 21.10.2015, 18:49 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
pechkin, Супер, спасибо, то что нужно!
Заметил вот какую штуку, я решил добавить позиций в листе "Расшифровка" ближе к сотне.
И после 61 строки (это если из листа "Расшифровка") или 84 строки (это если из листа "Исходные данные") макрос перестал добавлять пустые строки и вставлять автоматом значения "1234567".
Файл прилагаю.
К сообщению приложен файл: 5250530.xls (77.5 Kb)


Сообщение отредактировал maxexcel - Среда, 21.10.2015, 19:37
 
Ответить
Сообщениеpechkin, Супер, спасибо, то что нужно!
Заметил вот какую штуку, я решил добавить позиций в листе "Расшифровка" ближе к сотне.
И после 61 строки (это если из листа "Расшифровка") или 84 строки (это если из листа "Исходные данные") макрос перестал добавлять пустые строки и вставлять автоматом значения "1234567".
Файл прилагаю.

Автор - maxexcel
Дата добавления - 21.10.2015 в 18:49
pechkin Дата: Четверг, 22.10.2015, 18:05 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 49 ±
Замечаний: 0% ±

2003
Здравствуйте! Посмотрите. Работает, но если нужно больше строк измените в макросе 500 на другое значение.
К сообщению приложен файл: 52505301.xls (95.5 Kb)


Сообщение отредактировал pechkin - Четверг, 22.10.2015, 18:07
 
Ответить
СообщениеЗдравствуйте! Посмотрите. Работает, но если нужно больше строк измените в макросе 500 на другое значение.

Автор - pechkin
Дата добавления - 22.10.2015 в 18:05
maxexcel Дата: Четверг, 22.10.2015, 19:02 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 26
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
pechkin, Спасибо, работает класс!
 
Ответить
Сообщениеpechkin, Спасибо, работает класс!

Автор - maxexcel
Дата добавления - 22.10.2015 в 19:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных в шаблон с условием ЕСЛИ-ТО (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!