Объединение таблиц в excel макрос

Обновлено: 08.07.2024

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

Файлы для скачивания:
ФайлОписаниеРазмер файла:Скачивания
Пример 14 Кб1595

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

При попытке назначить второй макрос той же кнопке мы обнаруживаем, что этого сделать нельзя, одна кнопка - один макрос. Что делать? Перед нами вырисовывается вариант, удалить первый и второй макрос и записать один длинный, который и копирует, и присваивает, но мы понимаем, что чем длине макрос, тем выше вероятность совершить ошибку при записи и начать все заново, так можно и до ночи провозиться.

Поэтому я предлагаю следующее решение: записать несколько коротких макросов, свести их в одном и уже этот большой макрос присвоить нашей Конопке.

Сделать это очень просто. Записываем два макроса, как это сделать в статье "Как записать макрос не зная языка VBA?". Суть работы макросов будет заключаться в следующем:

  • Макрос1 - будет копировать данные из диапазона E2:E6 и вставлять их в диапазон G2:G6, как значения с сохранением форматов.
  • Макрос2 - будет выделять данные в диапазоне G2:G6 красным цветом и делать их "жирными".

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

Затем нажимаем сочетание клавиш Alt+F11 , откроется окно редактора VBA, и мы увидим код двух наших макросов, записанный друг под другом:

Как соединить несколько макросов в один?

Встаем курсором после слов End Sub (второго макроса), и пишем следующий код:

Должно получиться так:

kak-soedinit-neskolko-makrosov-v-odin_2.jpg

Если у вас записанные макросы оказались в разных модулях - это никак не влияет на их выполнение. Вставьте код "Макрос3" в любой из этих модулей или создайте 3-й модуль и вставьте код в него.

После чего закрываем редактор VBA, возвращаемся в нашу рабочую книгу, создаем кнопку на листе и назначаем ей "Макрос3", как это сделать описано в статье "Как сделать кнопку для запуска своего макроса?"

После чего нажимаем кнопку и видим, что макросы выполняются последовательно:

Суть задачи:
Есть несколько таблиц с одинаковыми шапками на разных листах (Время - Событие - прочие данные).

Требуется на отдельном листе создать общую таблицу, которая будет банально объединять в себя все строчки из моих таблиц.
То есть итоговая таблица должна содержать все строки из исходных как если бы мы их копировали вручную. Желательно, при этом, чтобы она была динамической (при изменении/добавлении данных в исходные она должна обновляться).
Консолидация - не то что нужно, как я понял.

Пример:
Таблица 1:
10:30 - Подъём
11:30 - Завтрак

Таблица 2:
10:45 - Зарядка
15:40 - Обед

Итоговая таблица:
10:30 - Подъём
11:30 - Завтрак
10:45 - Зарядка
15:40 - Обед

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Объединение таблиц в одну сводную
Скажите, пожалуйста, в одной книги есть три листа с данными и лист "Итог" (Excel). Таблицы.

Объединение нескольких файлов в одну таблицу (макрос не работает)
Нашел макрос Sub LoadDataFromWorkbooks() On Error Resume Next: Err.Clear Dim.

Объединение 150 расчетных таблиц в одну, с возможностью обновления связей
Доброго всем дня! Други, помогите найти способ решения следующей задачи: Имеем: файл Ексел.

Eckler, правый клик по ярлычку листа, на который должны собираться таблицы, - Исходный текст. Вставьте этот код:

Он недоделан (переносит все, включая заголовки), но сейчас мне некогда.
Потом кстати можно сортировку добавить, если надо.

Добавлено через 10 часов 27 минут
Попробуйте так

Объединение текста из нескольких ячеек в одну ячейке, по всей таблице
Есть большая таблица с которой требуется проводить разные манипуляции такие как сортировка и.

Копирование данных из нескольких таблиц в одну
Доброго времени суток. Передо мной стоит задача: есть книга, в которой содержится N-ное количество.

Подгрузка данных из нескольких таблиц в одну
Доброго времени суток, профессионалы экстра класса! Требуется помощь в написании макроса по.


Сбор информации из нескольких таблиц в одну
Добрый день! Читала различные статьи по этому вопросу, но пока не нашла решения. Есть 8.

Имеем несколько однотипных таблиц на разных листах одной книги. Например, вот такие:

Необходимо объединить их все в одну общую таблицу, просуммировав совпадающие значения по кварталам и наименованиям.

Самый простой способ решения задачи "в лоб" - ввести в ячейку чистого листа формулу вида

=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3

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

Если листов очень много, то проще будет разложить их все подряд и использовать немного другую формулу:

=СУММ('2001 год:2003 год'!B3)

Фактически - это суммирование всех ячеек B3 на листах с 2001 по 2003, т.е. количество листов, по сути, может быть любым. Также в будущем возможно поместить между стартовым и финальным листами дополнительные листы с данными, которые также станут автоматически учитываться при суммировании.

Способ 2. Если таблицы неодинаковые или в разных файлах

Если исходные таблицы не абсолютно идентичны, т.е. имеют разное количество строк, столбцов или повторяющиеся данные или находятся в разных файлах, то суммирование при помощи обычных формул придется делать для каждой ячейки персонально, что ужасно трудоемко. Лучше воспользоваться принципиально другим инструментом.

Рассмотрим следующий пример. Имеем три разных файла (Иван.xlsx, Рита.xlsx и Федор.xlsx) с тремя таблицами:

consolidation2.jpg

Хорошо заметно, что таблицы не одинаковы - у них различные размеры и смысловая начинка. Тем не менее их можно собрать в единый отчет меньше, чем за минуту. Единственным условием успешного объединения (консолидации) таблиц в подобном случае является совпадение заголовков столбцов и строк. Именно по первой строке и левому столбцу каждой таблицы Excel будет искать совпадения и суммировать наши данные.

Для того, чтобы выполнить такую консолидацию:

  1. Заранее откройте исходные файлы
  2. Создайте новую пустую книгу (Ctrl + N)
  3. Установите в нее активную ячейку и выберите на вкладке (в меню) Данные - Консолидация(Data - Consolidate) . Откроется соответствующее окно:

consolidation3.jpg

Обратите внимание, что в данном случае Excel запоминает, фактически, положение файла на диске, прописывая для каждого из них полный путь (диск-папка-файл-лист-адреса ячеек). Чтобы суммирование происходило с учетом заголовков столбцов и строк необходимо включить оба флажка Использовать в качестве имен (Use labels) . Флаг Создавать связи с исходными данными (Create links to source data) позволит в будущем (при изменении данных в исходных файлах) производить пересчет консолидированного отчета автоматически.

После нажатия на ОК видим результат нашей работы:

consolidation5.jpg

Наши файлы просуммировались по совпадениям названий из крайнего левого столбца и верхней строки выделенных областей в каждом файле. Причем, если развернуть группы (значками плюс слева от таблицы), то можно увидеть из какого именно файла какие данные попали в отчет и ссылки на исходные файлы:

Типичная задача - имеем несколько однотипных таблиц на разных листах рабочей книги. Хотим, чтобы при внесении данных в любую из этих таблиц - данные добавлялись в одну общую таблицу, расположенную на отдельном листе.

Инструкция

Устанавливаем себе надстройку ЁXCEL . Читаем справку.

Приступаем к решению. Переходим во вкладку ЁXCEL главного меню, нажимаем кнопку "Таблицы", в выпавшем списке выбираем команду "Объединить таблицы":

В открывшемся диалоговом окне выделяем листы с таблицами, которые необходимо объединить и нажимаем "ОК":


Переходим на итоговый лист (тот где хотим вывести общую таблицу), устанавливаем курсор в ячейку "A1". Переходим в главном меню во вкладку "Данные" в разделе "Получение внешних данных" нажимаем кнопку "Существующие подключения":

В открывшемся диалоговом окне выбираем "Подключения в этой книге" - "Запрос из Excel Files" и нажимаем "Открыть":


В открывшемся диалоговом окне устанавливаем переключатели в положения "Таблица" и "Имеющийся лист", нажимаем "ОК":

В активном листе будет создана таблица, которая будет объединять таблицы, расположенные на указанных нами листах:

Теперь все таблицы связаны. Добавьте новые строчки в любую из объединенных таблиц. Перейдите во вкладку "Данные" и нажмите кнопку "Обновить все":

В итоговой таблице появятся строчки, добавленные в выбранный вами лист.

Чтобы обновление итоговой таблицы происходило автоматически вставьте в модуль каждого листа (кроме Итогового) следующий код (Как вставлять макросы?):

Видео-пример

Важно:

  • Количество столбцов во всех таблицах должно быть одинаково;
  • Кроме таблиц на листах не должно быть никакой информации;
  • Если вы переместили файл в другую папку или отправили файл коллеге по электронной почте - необходимо заново связать таблицы (в запросе прописывается абсолютный путь к файлу).

Чтобы запрос работал не зависимо от того в какой папке лежит файл вставьте в модуль "ЭтаКнига" следующий код:

Данный макрос при открытии книги будет определять текущий путь к файлу и менять путь к файлу в запросе.

Файлы для скачивания:
ФайлОписаниеРазмер файла:Скачивания
Пример 21 Кб2438

Чтобы оценить всю прелесть - выньте файл из архива и при загрузке файла включите макросы.

Возможные ошибки при использовании этого метода:

Комментарии

Есть файл с 22 вкладками. на них одинаковые по структуре таблицы. 2-3 любых таблицы объединяются легко. большее кол-во уже нет. Внутренняя ошибка драйвер odbc excel внутренняя ошибка программировани я объектов.

Сергей, добрый день!
Подскажите, пожалуйста, как можно свести около 20 таблиц в одну, если при этом в шапках у всех этих таблиц не всегда совпадает количество столбцов? Спасибо. Здравствуйте!
У меня 54 листа с данными, при объединении выходит ошибка "Слишком сложный запрос". По частям на одном листе не получается "Внутренняя ошибка программировани я объектов". Добрый день! Да 54 листа это много. Я сейчас пишу команду которая будет делать это статично без ограничений. Пока предлагаю такое решение. Объедините 10 листов, выведите итог, и так несколько раз. потом объедините итоги. Добрый день. Есть таблица с названиями позиций в хаотичном порядке и есть вторая таблица сверенная с проставленными артикулами этих же позиций но в алфавитном порядке. Нужно артикулы из второй проставить напротив соответствующих позиций в первой таблице в которой позиции в хаотичном порядке. Подскажите, пожалуйста, как объединить 2 таблицы , обе с ФИО (в одной таблице ФИО может быть, в другой этой ФИо может не быть) с доходами за 2 разных года. Их надо объединить в одну.

Еще, вопрос. Хочу сливать сразу много однотипных таблиц. Но не все данные а только первые 15 столбцов.
Начиная с 16-й колонки у меня расчетные данные, которые не нужно сливать.

Читайте также: