Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
1

Копирование ячеек столбца одного листа и переноса на другой лист

01.03.2015, 13:44. Просмотров 3442. Ответов 35
Метки нет (Все метки)

Доброго времени суток всем вам, уважаемые форумчане.

В виду рабочей необходимости, я начал изучать программирование на VBA. Однако на данный момент, не обладаю необходимыми знаниями для написания нужного мне для работы макроса.
Проблема состоит в следующем: есть два листа лист 1 - "Данные" - вся история продаж, лист 2 - "Данные для консолидации" - по сути, это продажи за месяц, которые удаляются по окончанию месяца.
Главная цель, чтобы данные с листа 2 копировались на лист 1 (история продаж за все периоды), в определенные строки столбцов (в конец списка, т.е. в первую свободную ячейку списка).
Сначала информация о продажах и клиенте заносится на лист 2: столбец B - название контрагента, С - код товара, D - купленный товар, Е - единицы измерения (кг, л), F - количество продаж, G - чистый доход, H - себестоимость продаж, L - цена единицы товара, J - % рентабельности, K - Gross Margin в денежном выражении, L - Gross Margin в %.
Затем, возникла необходимость, чтобы эта информация автоматически переносилась на лист 1 - "Данные", в следующие столбцы:
Из столбца B листа 2 в столбец I - покупатель на листе 1, из столбца D (купленный товар) лист 2 в столбец Q листа 1, из столбца E листа 2 в столбец S листа 1 и дальше соответственно с листа 2 столбцы F, H, J, K, L на лист 1 в столбцы T, X, Z, AB, AD.

Однако основным моментом является необходимость, чтобы на листе 1 ("Данные" в столбце Q листа 1, при появлении определенного названия проданного товара (например Продукт 1) в той же строке в столбце E появлялся тип продукта (английский вариант, например "Chocolate сandies", в столбце F - тип продукта (русский вариант, например "Шоколадные конфеты", G - вид продукта (например, "Шоколад", H - группа продукта ("Настоящий шоколад").

В приложении, вы найдете файл-пример.

Буду благодарен за любую помощь в решении данного вопроса.

Благодарю Вас, за уделенное время, при прочтении данной темы.
0
Вложения
Тип файла: xlsx Лист Microsoft Excel.xlsx (9.7 Кб, 15 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2015, 13:44
Ответы с готовыми решениями:

Копирование данных из разных ячеек одного листа на другой лист
Ребят, доброго всем вечера. Требуется помощь. VBA в рамках предмета под...

Перенос данных с ячеек одного листа на другой лист
Добрый день! Помогите пожалуйста автоматизировать заполнение таблицы (графика...

Макрос для переноса выделенных ячеек из одного листа документа в другой
Добрый день. Буду признателен тем, кто сможет оказать мне помощь в следующем...

Подскажите код макроса для переноса значений ячеек из одного листа в другой
Ребята подскажите макрос который может к примеру переносить значения из ячеек...

Копирование диапазона ячеек из одного листа в другой
Подскажите не помогу понять как скопировать в определенное место диапазон ячеек...

35
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 19:06 2
Цитата Сообщение от Евгений Жуков Посмотреть сообщение
Главная цель, чтобы данные с листа 2 копировались на лист 1
Автоматически, вызовом макроса или можно кнопкой?
Цитата Сообщение от Евгений Жуков Посмотреть сообщение
Однако основным моментом является необходимость, чтобы на листе 1 ("Данные" в столбце Q листа 1, при появлении определенного названия проданного товара (например Продукт 1) в той же строке в столбце E появлялся тип продукта (английский вариант, например "Chocolate сandies", в столбце F - тип продукта (русский вариант, например "Шоколадные конфеты", G - вид продукта (например, "Шоколад", H - группа продукта ("Настоящий шоколад").
Нужна таблица соответствий названия товара остальным характеристикам. Или хотя бы ее расположение в документе, чтобы сделать ссылки.
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 19:30  [ТС] 3
В идеале было бы здорово, чтобы копировались ячейки автоматически с помощью вызова макроса.

По поводу таблицы, Вы бы не могли помочь мне с данными которые указаны в таблице (т.е. с одним продуктом "Шоколадные конфеты "Мишка"), а все остальные товары и их критерии я "прикручу" сам по аналогии, так как там свыше 100 товаров с соответствиями и я понимаю, что это большой и длительный труд.

Благодарю Вас.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 19:38 4
Цитата Сообщение от Евгений Жуков Посмотреть сообщение
с данными которые указаны в таблице
В таблице они находятся там, где они будут вставляться. А для написания макроса нужно знать: откуда они будут браться. Например, если они будут на листе 3 записаны в столбцах в том же порядке как перечислены у вас, то этого достаточно. Поэтому вы определитесь. Если вас устроит лист 3, то больше вопросов нет. Если где-то в другом месте, то напишите: где?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 19:53  [ТС] 5
Цитата Сообщение от chumich Посмотреть сообщение
В таблице они находятся там, где они будут вставляться. А для написания макроса нужно знать: откуда они будут браться. Например, если они будут на листе 3 записаны в столбцах в том же порядке как перечислены у вас, то этого достаточно. Поэтому вы определитесь. Если вас устроит лист 3, то больше вопросов нет. Если где-то в другом месте, то напишите: где?
Я Вас понял, благодарю за разъяснение.

В таком случае, они будут располагаться на 3 листе - "MasterData".

Добавлено через 10 минут
Получается данные содержащие Название контрагента Код товара Название товара, Количество продаж Себестоимость продаж % рентабельности Gross Margin в денежном выражении Gross Margin в %, должны копироваться из листа Данные для консолидации.
А данные Тип продукта (англ) Тип продукта (рус) Вид продукта Группа продукта будут располагаться на 3 листе - "MasterData".
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 20:07 6
Цитата Сообщение от Евгений Жуков Посмотреть сообщение
А данные Тип продукта (англ) Тип продукта (рус) Вид продукта Группа продукта будут располагаться на 3 листе - "MasterData".
Там еще нужно первой графой "Название продукта" сделать.
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 20:13  [ТС] 7
Цитата Сообщение от chumich Посмотреть сообщение
Там еще нужно первой графой "Название продукта" сделать.
Конечно, на третьем листе сначала будет идти столбец с названиями продуктов, а потом столбцы с типами, видами, группами и т.д.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 20:25 8
Последнее уточнение: всё-таки занесение как будет происходить? Допустим, вы заполняете полностью строку на 2 листе и что дальше:
- сделать на листе кнопку, при нажатии на которую будет происходить занесение?
- вы будете выходить в меню Вид и вызывать макрос оттуда?
- вы после заполнения графы "Gross Margin в %" переходите в соседний столбец (или нажимаете Enter) и макрос запускается?
Какой из вариантов для вас лучше?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 20:32  [ТС] 9
Цитата Сообщение от chumich Посмотреть сообщение
Последнее уточнение: всё-таки занесение как будет происходить? Допустим, вы заполняете полностью строку на 2 листе и что дальше:
- сделать на листе кнопку, при нажатии на которую будет происходить занесение?
- вы будете выходить в меню Вид и вызывать макрос оттуда?
- вы после заполнения графы "Gross Margin в %" переходите в соседний столбец (или нажимаете Enter) и макрос запускается?
Какой из вариантов для вас лучше?
Заполнение буде происходить следующим образом:
Считается, что лист 3 с мастер-данными уже создан, название товара имеет свои виды, типы и пр. Далее, я заполняю лист 2 вручную, после этого запускаю макрос, который перенесет все необходимые данные на лист 1.

Благодарю за столь внимательное отношение, для того чтобы это не было трудозатратным для Вас, я буду запускать макрос в ручную через "Вид".
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 21:07 10
Всё-таки это было не последнее уточнение . Еще хочу спросить: на 2 листе данные будут накапливаться, или после занесения удаляться? И занесение новых данных будет по одной строке или может быть несколько за один раз?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 21:20  [ТС] 11
Цитата Сообщение от chumich Посмотреть сообщение
Всё-таки это было не последнее уточнение . Еще хочу спросить: на 2 листе данные будут накапливаться, или после занесения удаляться? И занесение новых данных будет по одной строке или может быть несколько за один раз?
Ничего страшного, напротив это хорошо)
На 2 листе данные будут удалятся, поэтому я и хочу их копировать на лист 1 а не переносить. Данные заносятся из другого файла выборочным копированием строк (не за один клик).
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 21:37 12
То есть изначально на 2 листе ничего нет (кроме заголовков), потом туда заносятся одна или несколько строк из другого файла и потом их макросом нужно передать в лист 1. После чего на втором листе они будут удаляться. Я всё правильно понял?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 21:45  [ТС] 13
Цитата Сообщение от chumich Посмотреть сообщение
То есть изначально на 2 листе ничего нет (кроме заголовков), потом туда заносятся одна или несколько строк из другого файла и потом их макросом нужно передать в лист 1. После чего на втором листе они будут удаляться. Я всё правильно понял?
Совершенно верно, Сергей.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 22:07 14
Только сейчас обратил внимание: год, тип, месяц и тип покупателя на листе 1 вручную будете заполнять?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 22:11  [ТС] 15
Цитата Сообщение от chumich Посмотреть сообщение
Только сейчас обратил внимание: год, тип, месяц и тип покупателя на листе 1 вручную будете заполнять?
Да, эти строки я буду вручную заполнять.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 22:15 16
Это можно будет делать после переноса данных?
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 22:21  [ТС] 17
Цитата Сообщение от chumich Посмотреть сообщение
Это можно будет делать после переноса данных?
Да. Я буду их заполнять после копирования.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
01.03.2015, 23:01 18
Лучший ответ Сообщение было отмечено Евгений Жуков как решение

Решение

Я всё-таки сделал кнопку (если не понравится - просто удалите) . Но, можно работать и через Вид. Не забудьте разрешить макросы. Можете сразу попробовать. Я там уже поупражнялся немного . Условия работы макроса:
1. Не менять порядок листов и столбцов.
2. Не вносить дополнительные данные куда-нибудь вниз этих трех листов (если очень нужно, то можно конечно убрать это ограничение, напишите - я немного исправлю код)
3. Заполнять не пропуская строки (желательно).
4. Заполняемые вручную столбцы 1 листа заполнять после внесения данных со 2го (можно тоже исправить, если очень нужно)
Файл во вложении:
вложенияСладкаяЖизнь.rar
1
Евгений Жуков
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 21
01.03.2015, 23:38  [ТС] 19
Сергей, большое Вам спасибо за помощь, за уделенное внимание и время!

П.С. У меня к Вам вопрос, как к преподавателю. Порекомендуйте пожалуйста литературу по созданию макросов в Excel, на доступном языке. У меня не техническое образование, но с математикой дружу.
0
chumich
1483 / 845 / 280
Регистрация: 20.12.2014
Сообщений: 2,163
02.03.2015, 00:07 20
Цитата Сообщение от Евгений Жуков Посмотреть сообщение
литературу по созданию макросов в Excel
Если речь идет о макросах на VBA, то литературы очень много. Если брать из глобально-фундаментального, то наверно Джон Уокенбах "Профессиональное программирование на VBA в Excel". Если что попроще, то можно Л.Д.Слепцову "Программирование на языке VBA. Самоучитель". Мне нравится Водовозов "Управление документами Word и Excel на VBA". В нем практически нет текста, одни коды на все случаи жизни . Но, если честно, сам я изучал это чисто на практике. Появляется задача - забиваю в гугл, ищу аналоги, делаю, пробую, ищу ответы на ошибки, пока не добиваюсь, чтобы работало Хотя это не образец для подражания - часто не хватает знания основ, при котором многое делалось бы быстрее и проще.

Еще, по поводу программы. Забыл сказать еще про одно важное условие работы макроса. Нужно, чтобы название продукта, вводимого на 2 листе, соответствовало его названию на третьем. Поэтому, если вы будете брать данные для второго листа из какого-нибудь другого файла, то следите за этим моментом. Я бы лучше копировал название из третьего листа. Или сделал выпадающий список, для выбора названий... Хотя нет, если у вас их будет 300, то быстрее впечатать . Можно поставить фильтр на столбец названий на 3 листе и по первым вводимым буквам находить нужное - для облегчения копирования. В общем вариантов много. Если будет необходимость - пишите в эту же ветку или в личку - я доработаю.
1
02.03.2015, 00:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2015, 00:07

Нужен макрос переноса ячеек с текстом из одного столбца в другой
Здравствуйте!Помогите с макросом.Нужен макрос который будет делать перенос всех...

Экономное копирование из одного листа в другой (добавление готовых накладных на лист для печати в excel)
Здравствуйте, подскажите, пожалуйста макрос который будет компактно копировать...

Изменить макрос переноса данных с листа на другой лист
Ребята что в этом коде нужно изменить чтобы он мог все данные в ячейках из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru