Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 00:21   #1
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию Копировать с разных листов макросом

Здравствуйте ув. форумчане. У меня такой вопрос, нужен макрос для копирования содержимого с разных листов на один, и при том, чтоб ети данные вставлялись последовательно. Пример в прикреплённом файле.
Смысл в чём копировать данные сначала с листа1 на всё вместе, потом с листа2 снова на всё вместе но разместить сразу под уже скопироваными данными. А потом таже манипуляция но с листа4.
Подскажите пожалуйста как это сделать.





--------- примечание модератора - вдруг кому пригодится --------------

На сайте ExcelVBA.ru можно скачать универсальную программу обработки прайс-листов:
http://excelvba.ru/programmes/Unification

Цитата:
Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет вам нажатием одной кнопки преобразовать множество прайс-листов различных форматов к единому виду.
Программа умеет объединять данные из самых разных прайсов (формата CSV и Excel), в том числе из файлов иерархической структуры (выгрузки из 1С).

Возможностей в программе множество — например, она умеет делать наценку (в т.ч. и «сложную»), конвертировать цены из одной валюты в другую, выполнять замены наименований, выделять нужные данные (характеристики) из описания товара при помощи специальных функций.

Создавать итоговый прайс можно в формате Excel (по шаблону XLS) или в CSV (разделители столбцов, кодировка, и всё такое - настраивается)

Вы легко сможете настроить программу обработки прайс-листов под свои нужды.
Если сами не разберётесь — позвоните в Скайп (ник: ExcelVBA.ru), — получите бесплатную консультацию, с демонстрацией возможностей программы.

Программа изначально предназначалась для обработки прайс-листов на автозапчасти, но подойдёт для абсолютно любых файлов Excel.
Для обработки прайс-листов на автомобильные шины и диски, в программу добавлены специальные функции.

Обновления к программе «Прайс-лист» выходят регулярно, — соответственно, в программу постоянно добавляются новые возможности.
Вложения
Тип файла: rar Пример1.rar (1.5 Кб, 30 просмотров)

Последний раз редактировалось EducatedFool; 24.02.2013 в 12:45.
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 05:48   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Пример1_2.rar (10.6 Кб, 57 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.02.2011, 10:29   #3
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Спасибо ув. SAS888. Но тут есть проблемка, у меня листов очень много, и подписаны они по разному. Не могли бы вы показать как прописать названия листов, и мне нужно выставить их в определённом порядке (потому-что листы вперемешку).
И как ваш макрос можна сохранить в "стандартные" чтоб применять его можно было для разных книг?

Последний раз редактировалось Петро1; 25.02.2011 в 10:46.
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 10:59   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Можно так:
Код:
Sub www()
    Dim i%, a
    a = Array("Лист1", "Лист2", "Лист3", "Лист4") ' преречисляете листы в нужном Вам порядке
    For i = 1 To UBound(a)
        Sheets(a(i)).UsedRange.Copy
        '..... тут ваша обработка
    Next
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 25.02.2011, 12:03   #5
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Ув. kuklp. Как бы это выразится помягче, в общем не могли бы вы всунуть эту процедуру в предыдуцую заготовку, у меня как-бы это - руки не стоят Я могу переделать только уже готовый под свои потребности.
А ещё вторая часть вопроса о том чтоб макрос был в "стандартных", как его туда добавить?
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 12:38   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Private Sub Main()
    Dim i As Integer, a()
    Application.ScreenUpdating = False: Cells.ClearContents
     a = Array("Лист1", "Лист2", "Лист4") ' преречисляете листы в нужном Вам порядке
    For i = 0 To UBound(a)
    Sheets(a(i)).UsedRange.Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
    Next
    Application.ScreenUpdating = true
End Sub
Вторую часть вопроса плохо понял. Через menu-insert-module. И в созданный модуль копируете макрос
Вложения
Тип файла: rar Пример1_3.rar (10.6 Кб, 39 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 25.02.2011 в 12:40.
kuklp вне форума Ответить с цитированием
Старый 25.02.2011, 14:19   #7
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

Петро1
в PERSONAL.xls макрос засуньте, будет доступно в любой книге. Находится в c:\Users\собственно вы\AppData\Roaming\Microsoft\Excel\ XLSTART\ - для Win 7. Для предыдуущих виндоусов вроде также, только без Roaming. Называется это личная книга макросов.
Можно по-другому:
записать произвольный макрос макрорекордером в личную книгу. После этого книга PERSONAL.xls будет стразу видна по нажатию Alt + F11
3BEPOBOY вне форума Ответить с цитированием
Старый 25.02.2011, 17:57   #8
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

kuklp только в этой функции нет имени конечного листа (куда копировать). Не могли бы вы провести короткий ликбез по этому вопросу?! т.к. я буду подганять макрос под свои прайсы. Я так понимаю открытый лист конечный?!

И вам 3BEPOBOY спасибо, буду пробовать.

Последний раз редактировалось Петро1; 25.02.2011 в 18:01.
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 18:31   #9
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

[QUOTE=Петро1;744138]kuklp только в этой функции нет имени конечного листа (куда копировать). Не могли бы вы провести короткий ликбез по этому вопросу?! т.к. я буду подганять макрос под свои прайсы. Я так понимаю открытый лист конечный?!

Всё разобрался всем спасибо.


А можно ещё такой макрос. В примере видно, есть список товаров, названия (красными буквами) повторяются, но под ними ничего нет. Так вот, чтоб макрос определял если название есть а под ним снова название (красными буквами) то первое название удалить. Вообщем в примере понятнее. Возможен ли такой макрос? На счёт красных букв я тут ещё одну тему паралельно веду.
Вложения
Тип файла: rar Пример3_1.rar (1.9 Кб, 23 просмотров)

Последний раз редактировалось Петро1; 25.02.2011 в 18:43.
Петро1 вне форума Ответить с цитированием
Старый 25.02.2011, 18:56   #10
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

И всё же ещё есть вопросы.
Private Sub Main()
Dim i As Integer, a()
Application.ScreenUpdating = False: Cells.ClearContents
a = Array("Ëèñò1", "Ëèñò2", "Ëèñò4") ' ïðåðå÷èñëÿåòå ëèñòû â íóæíîì Âàì ïîðÿäêå
For i = 0 To UBound(a)
Sheets(a(i)).UsedRange.Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
Next
End Sub

я эту процедуру не вижу при нажатии "выполнить макрос", она мне там нужна чтоб назначить комбинацию клавиш на выполнение.
Предудущий пост тоже актуален.
Петро1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспонирование множества данных из разных книгах или из разных листов на 1 лист посредством макроса Тантана Microsoft Office Excel 6 18.12.2014 13:04
выбока из разных листов таблицы isus Microsoft Office Excel 5 15.12.2010 13:26
Как копировать URL адрес из ячейки в другую ячейку (макросом). AlexDoom Помощь студентам 1 09.03.2009 10:59
Копировать значения ячеек макросом torus Microsoft Office Excel 1 09.11.2008 00:15
Копировать данные из разных ячеек по нескольким листам в один лист Dorvir Microsoft Office Excel 2 11.06.2008 10:10