Консолидация данных с нескольких листов
Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
Чтобы суммировать и отчеты о результатах отдельных листов, можно объединить данные с каждого листа в главный лист. Листы могут находиться в той же книге, что и главный лист, или в других книгах. При консолидации данных вы собираете данные, чтобы было проще обновлять и агрегировать их по мере необходимости.
Например, если в каждом из региональных офисов есть свой лист расходов, с помощью консолидации можно свести эти данные на главном листе корпоративных расходов. Главный лист также может содержать итоговые и средние значения продаж, данные о складских запасах и информацию о самых популярных товарах в рамках всей компании.
Совет: Если вы часто консолидируете данные, это может помочь создать новые листы из шаблона листа, использующего согласованный макет. Дополнительные сведения о шаблонах см. в статье Создание шаблона. Также советуем добавить в шаблон таблицы Excel.
Существует два способа консолидации данных: по позиции или категории.
Консолидация по позициям. Данные в исходных областях имеют одинаковый порядок и используют одни и те же метки. Используйте этот способ, чтобы консолидировать данные из нескольких листов, основанных на одном шаблоне, например отчетов о бюджете.
Консолидация по категории: данные в исходных областях не расположены в одном и том же порядке, но имеют одинаковые метки. Используйте этот способ, чтобы консолидировать данные из нескольких листов с разными макетами, но одинаковыми метками данных.
-
Консолидация данных по категориям аналогична созданию сводной таблицы. Однако с помощью сводной таблицы можно легко реорганизовать категории. Если требуется более гибкая консолидация по категориям, рассмотрите возможность создания сводной таблицы .
Примечание: Примеры, приведенные в этой статье, были созданы с помощью Excel 2016. Хотя ваше представление может отличаться, если вы используете другую версию Excel, шаги будут одинаковыми.
Чтобы объединить несколько листов в главный лист, выполните следующие действия.
-
Если вы еще этого не сделали, настройте данные на каждом листе, выполнив следующие действия.
-
Убедитесь, что каждый диапазон данных имеет формат списка. Каждый столбец должен иметь метку (заголовок) в первой строке и содержать аналогичные данные. В списке не должно быть пустых строк или столбцов.
-
Поместите каждый диапазон на отдельный лист, но не вводите ничего на главном листе, где планируется объединить данные. Excel сделает это за вас.
-
Убедитесь, что каждый диапазон имеет одинаковый макет.
-
-
На основном листе щелкните левый верхний угол области, в которой требуется разместить консолидированные данные.
Примечание: Чтобы избежать перезаписи существующих данных на главном листе, оставьте достаточно ячеек справа и под этой ячейкой для объединенных данных.
-
Щелкните Data>Консолидация (в группе Data Tools).
-
Выберите в раскрывающемся списке Функцияитоговая функция, которую требуется использовать для консолидации данных. По умолчанию используется функция SUM.
Ниже приведен пример выбора трех диапазонов листа:
-
Выделите данные.
Затем в поле Ссылка нажмите кнопку Свернуть , чтобы сжать панель и выбрать данные на листе.
Щелкните лист с данными, которые вы хотите консолидировать, а затем нажмите кнопку раскрытия диалогового окна справа, чтобы вернуться в диалоговое окно Консолидация.
Если лист, содержащий данные, которые необходимо объединить, находится в другой книге, нажмите кнопку Обзор , чтобы найти эту книгу. После поиска и нажатия кнопки ОК Excel введет путь к файлу в поле Ссылка и добавит восклицательный знак в этот путь. Затем можно продолжить выбор других данных.
Ниже приведен пример выбора трех диапазонов листа:
-
Во всплывающем окне Консолидация нажмите кнопку Добавить. Повторите это, чтобы добавить все объединяемые диапазоны.
-
Автоматическое обновление и обновление вручную Если вы хотите, чтобы Excel автоматически обновлял таблицу консолидации при изменении исходных данных, просто установите флажок Создать ссылки на исходные данные . Если этот флажок не установлен, можно обновить консолидацию вручную.
Примечания:
-
Связи невозможно создать, если исходная и конечная области находятся на одном листе.
-
Если необходимо изменить экстент диапазона или заменить диапазон, щелкните диапазон во всплывающем окне Консолидация и обновите его, выполнив описанные выше действия. При этом будет создана новая ссылка на диапазон, поэтому вам потребуется удалить предыдущую ссылку перед консолидацией. Просто выберите старую ссылку и нажмите клавишу DELETE.
-
-
Нажмите кнопку ОК, и Excel создаст консолидацию. При необходимости можно применить форматирование. Необходимо отформатировать только один раз, если вы не выполните консолидацию повторно.
-
Все названия, не совпадающие с названиями в других исходных областях, приведут к появлению дополнительных строк или столбцов в консолидированных данных.
-
Убедитесь, что все категории, которые не требуется консолидировать, имеют уникальные метки, которые отображаются только в одном исходном диапазоне.
-
Если данные для консолидации есть в разных ячейках на разных листах:
Введите формулу со ссылками на ячейки других листов, по одной на каждый лист. Например, чтобы консолидировать данные из листов «Продажи» (в ячейке B4), «Кадры» (в ячейке F5) и «Маркетинг» (в ячейке B9), в ячейке A2 основного листа, введите следующее:
Совет: Ввод ссылки на ячейку, например Sales! B4 — в формуле без ввода введите формулу до точки, в которой требуется ссылка, затем перейдите на вкладку листа и щелкните ячейку. Excel заполтит имя листа и адрес ячейки. ПРИМЕЧАНИЕ. Формулы в таких случаях могут быть подвержены ошибкам, так как очень легко случайно выбрать неправильную ячейку. Также может быть трудно обнаружить ошибку после ввода сложной формулы.
Если данные для консолидации находится в одних и том же ячейках на разных листах:
Введите формулу с трехмерной ссылкой, которая указывает на диапазон имен листов. Например, чтобы объединить данные в ячейках A2 от Sales до Marketing включительно, в ячейке E5 главного листа необходимо ввести следующее:
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
См. также
Полные сведения о формулах в Excel
Рекомендации, позволяющие избежать появления неработающих формул
Поиск ошибок в формулах
Сочетания клавиш и горячие клавиши в Excel
Функции Excel (по алфавиту)
Функции Excel (по категориям)
Нужна дополнительная помощь?
Excel для Microsoft 365 для Mac Excel 2021 для Mac Excel 2019 для Mac Excel 2016 для Mac Excel для Mac 2011 Еще…Меньше
Если данные, которые требуется проанализировать, представлены на нескольких листах или в нескольких книгах, их можно объединить на одном листе с помощью команды «Консолидация». Например, если есть отдельный лист расходов для каждого регионального представительства, с помощью консолидации можно создать на базе этих данных корпоративный лист расходов. Такой лист может содержать итоговые и средние данные по продажам, текущим уровням запасов и наиболее популярным продуктам в рамках всей организации.
Тип консолидации следует выбирать с учетом того, как выглядят объединяемые листы. Если данные на листах расположены единообразно (названия строк и столбцов могут при этом различаться), воспользуйтесь консолидацией по расположению. Если же на листах для соответствующих категорий используются одинаковые названия строк и столбцов (данные при этом могут быть расположены по-разному), используйте консолидацию по категории.
Консолидация по расположению
Для консолидации по расположению диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов.
-
Откройте каждый из исходных листов и убедитесь в том, что данные на них расположены одинаково.
-
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
-
На вкладке Данные в группе Работа с данными нажмите кнопку Консолидация.
-
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
-
Выделите на каждом листе нужные данные.
Путь к файлу вводится в поле Все ссылки.
-
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Консолидация по категории
Для консолидации по категории диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов. Кроме того, категории должны быть названы одинаково. Например, если один из столбцов называется Сред. , а другой — Среднее, консолидация не просуммирует эти столбцы.
-
Откройте каждый из исходных листов.
-
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
-
На вкладке Данные в группе Работа с данными нажмите кнопку Консолидация.
-
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
-
Установите флажки в группе Использовать в качестве имен, указывающие, где в исходных диапазонах находятся названия: подписи верхней строки, значения левого столбца либо оба флажка одновременно.
-
Выделите на каждом листе нужные данные. Не забудьте включить в них ранее выбранные данные из верхней строки или левого столбца.
Путь к файлу вводится в поле Все ссылки.
-
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Примечание: Любые названия, не совпадающие с названиями в других исходных областях, могут привести к появлению в консолидированных данных отдельных строк или столбцов.
Консолидация по расположению
Для консолидации по расположению диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов.
-
Откройте каждый из исходных листов и убедитесь в том, что данные на них расположены одинаково.
-
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
-
На вкладке Данные в разделе Сервис нажмите кнопку Консолидация.
-
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
-
Выделите на каждом листе нужные данные и нажмите кнопку Добавить.
Путь к файлу вводится в поле Все ссылки.
-
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Консолидация по категории
Для консолидации по категории диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов. Кроме того, категории должны быть названы одинаково. Например, если один из столбцов называется Сред. , а другой — Среднее, консолидация не просуммирует эти столбцы.
-
Откройте каждый из исходных листов.
-
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
-
На вкладке Данные в разделе Сервис нажмите кнопку Консолидация.
-
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
-
Установите флажки в группе Использовать в качестве имен, указывающие, где в исходных диапазонах находятся названия: подписи верхней строки, значения левого столбца либо оба флажка одновременно.
-
Выделите на каждом листе нужные данные. Убедитесь, что вы выбрали верхнюю строку или левый столбец, а затем нажмите кнопку Добавить.
Путь к файлу вводится в поле Все ссылки.
-
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Примечание: Любые названия, не совпадающие с названиями в других исходных областях, могут привести к появлению в консолидированных данных отдельных строк или столбцов.
Нужна дополнительная помощь?
Skip to content
В статье рассматриваются различные способы объединения листов в Excel в зависимости от того, какой результат вы хотите получить:
- объединить все данные с выбранных листов,
- объединить несколько листов с различным порядком столбцов,
- объединить определённые столбцы с нескольких листов,
- объединить две таблицы Excel в одну по ключевым столбцам.
Сегодня мы займемся проблемой, с которой ежедневно сталкиваются многие пользователи Excel, — как объединить листы Excel в один без использования операций копирования и вставки. Рассмотрим два наиболее распространенных сценария: объединение числовых данных (сумма, количество, среднее и т. д.) и объединение листов ( то есть копирование данных из нескольких листов в один).
Вот что мы рассмотрим в этой статье:
- Объединение при помощи стандартного инструмента консолидации.
- Как копировать несколько листов Excel в один.
- Как объединить листы с различным порядком столбцов.
- Объединение только определённых столбцов из нескольких листов
- Слияние листов в Excel с использованием VBA
- Как объединить два листа в один по ключевым столбцам
Консолидация данных из нескольких листов на одном.
Самый быстрый способ консолидировать данные в Excel (в одной или нескольких книгах) — использовать встроенную функцию Excel Консолидация.
Рассмотрим следующий пример. Предположим, у вас есть несколько отчетов из региональных офисов вашей компании, и вы хотите объединить эти цифры в основной рабочий лист, чтобы у вас был один сводный отчет с итогами продаж по всем товарам.
Как вы видите на скриншоте ниже, четыре объединяемых листа имеют схожую структуру данных, но разное количество строк и столбцов:
Чтобы объединить всю эту информацию на одном листе, выполните следующие действия:
- Правильно расположите исходные данные. Чтобы функция консолидации Excel работала правильно, убедитесь, что:
- Каждый диапазон (набор данных), который вы хотите объединить, находится на отдельном листе. Не помещайте данные на лист, куда вы планируете выводить консолидированные данные.
- Каждый лист имеет одинаковый макет, и каждый столбец имеет заголовок и содержит похожие данные.
- Ни в одном списке нет пустых строк или столбцов.
- Запустите инструмент «Консолидация». На новом листе, где вы планируете поместить результаты, щелкните верхнюю левую ячейку, начиная с которой должны отображаться консолидированные данные, затем на ленте перейдите на вкладку «Данные» и нажмите кнопку «Консолидация».
Совет. Желательно объединить данные в пустой лист. Если на вашем основном листе уже есть данные, убедитесь, что имеется достаточно места (пустые строки и столбцы) для записи результатов.
- Настройте параметры консолидации. Появляется диалоговое окно «Консолидация», и вы делаете следующее:
- В поле «Функция» выберите одну из функций, которую вы хотите использовать для консолидации данных (количество, среднее, максимальное, минимальное и т. д.). В этом примере мы выбираем Сумма.
- В справочном окне, нажав в поле Ссылка на значок , выберите диапазон на первом листе. Затем нажмите кнопку «Добавить», чтобы присоединить его к списку диапазонов. Повторите этот шаг для всех листов, которые вы хотите объединить.
Если один или несколько листов находятся в другой книге, используйте кнопку «Обзор», чтобы найти эту книгу и использовать ее.
- Настройте параметры обновления. В том же диалоговом окне Консолидация выберите любой из следующих параметров:
- Установите флажки «Подписи верхней строки» и / или «Значения левого столбца» в разделе «Использовать в качестве имён», если вы хотите, чтобы заголовки строк и / или столбцов исходных диапазонов были также скопированы.
- Установите флажок «Создать связи с исходными данными», если нужно, чтобы консолидированные данные обновлялись автоматически при изменении исходных таблиц. В этом случае Excel создаст ссылки на ваши исходные листы, а также схему, как на следующем скриншоте:
Если вы развернете какую-либо группу (щелкнув значок плюса), а затем установите курсор на ячейку с определенным значением, в строке формул отобразится ссылка на исходные данные.
Если флажок не устанавливать, то вы получаете просто таблицу с итоговыми цифрами без всяких формул и ссылок:
Как видите, функция консолидации Excel очень полезна для сбора данных. Однако у нее есть несколько ограничений. В частности, он работает только для числовых значений и всегда обрабатывает эти числа тем или иным образом (сумма, количество, среднее и т. д.). Исходные цифры вы здесь не увидите.
Если вы хотите объединить листы в Excel, просто скопировав и объединив их содержимое, вариант консолидации не подходит. Чтобы объединить всего парочку из них, создав как бы единый массив данных, то вам из стандартных возможностей Excel не подойдёт ничего, кроме старого доброго копирования / вставки.
Но если вам предстоит таким образом обработать десятки листов, ошибки при этом будут практически неизбежны. Да и затраты времени весьма значительны.
Поэтому для подобных задач рекомендую использовать один из перечисленных далее нестандартных методов для автоматизации слияния.
Как скопировать несколько листов Excel в один.
Как мы уже убедились, встроенная функция консолидации умеет суммировать данные из разных листов, но не может объединять их путем копирования данных на какой-то итоговый лист. Для этого вы можете использовать один из инструментов слияния и комбинирования, включенных в надстройку Ultimate Suite для Excel.
Для начала давайте будем исходить из следующих условий:
- Структура таблиц и порядок столбцов на всех листах одинаковы.
- Количество строк везде разное.
- Листы могут в будущем добавляться или удаляться.
Итак, у вас есть несколько таблиц, содержащих информацию о различных товарах, и теперь вам нужно объединить эти таблицы в одну итоговую, например так, как на рисунке ниже:
Три простых шага — это все, что нужно, чтобы объединить выбранные листы в один.
1. Запустите мастер копирования листов.
На ленте перейдите на вкладку AblebitsData, нажмите «Копировать листы (Copy Sheets)» и выберите один из следующих вариантов:
- Скопировать листы из каждой книги на один лист и поместить полученные листы в одну книгу.
- Объединить листы с одинаковыми названиями в один.
- Скопировать выбранные в одну книгу.
- Объединить данные из выбранных листов на один лист.
Поскольку мы хотим объединить несколько листов путем копирования их данных, то выбираем последний вариант:
1. Выберите листы и, при необходимости, диапазоны для объединения.
Мастер копирования листов отображает список всех имеющихся листов во всех открытых книгах. Выберите те из них, которые хотите объединить, и нажмите « Далее».
Если вы не хотите копировать все содержимое определенного рабочего листа, используйте специальный значок, чтобы выбрать нужный диапазон, как показано на скриншоте ниже.
В этом примере мы объединяем первые три листа нашей книги:
Совет. Если рабочие листы, которые вы хотите объединить, находятся в другой книге, которая в данный момент закрыта, нажмите кнопку «Добавить файлы …» , чтобы найти и открыть эту книгу.
2. Выберите, каким образом произвести объединение.
На этом этапе вы должны настроить дополнительные параметры, чтобы ваша информация была объединена именно так, как вы хотите.
Как вставить :
- Вставить все – скопировать все данные (значения и формулы). В большинстве случаев это правильный выбор.
- Вставлять только значения – если вы не хотите, чтобы переносились формулы, выберите этот параметр.
- Создать ссылки на исходные данные – это добавит формулы, связывающие итоговые ячейки с исходными. Выберите этот параметр, если вы хотите, чтобы результат объединения обновлялся автоматически при изменении исходных файлов. Это работает аналогично параметру «Создать ссылки на исходные данные» в стандартном инструменте консолидации в Excel.
Как расположить :
- Разместите скопированные диапазоны один под другим – то есть вертикально.
- Расположить скопированные диапазоны рядом – то есть по горизонтали.
Как скопировать :
- Сохранить форматирование – понятно и очень удобно.
- Разделить скопированные диапазоны пустой строкой – выберите этот вариант, если вы хотите добавить пустую строку между сведениями, скопированными из разных листов. Так вы сможете отделить их друг от друга, если это необходимо.
- Скопировать таблицы вместе с их заголовками. Установите этот флажок, если хотите, чтобы заголовки исходных таблиц были включены в итоговый лист.
На скриншоте ниже показаны настройки по умолчанию, которые нам подходят:
Нажмите кнопку «Копировать (Copy)», и у вас будет содержимое трех разных листов, объединенное в один итоговый, как показано в начале этого примера.
Быть может, вы скажете, что подобную операцию можно произвести путем обычного копирования и вставки. Но если у вас будет десяток или более листов и хотя бы несколько сотен строк на каждом из них, то это будет весьма трудоемкой операцией, которая займет довольно много времени. Да и ошибки вполне вероятны. Использование надстройки сэкономит вам много времени и избавит от проблем.
Как объединить листы Excel с различным порядком столбцов.
Когда вы имеете дело с файлами, созданными разными пользователями, порядок столбцов в них часто отличается. Как же их объединить? Будете ли вы копировать вручную или перемещать столбцы, чтобы упорядочить их в каждой книге? Это совсем не выход.
Используем инструмент объединения листов Combine Sheets.
Запускаем надстройку через меню Ablebits Data – Combine Sheets.
Выбираем и отмечаем галочками те листы, данные с которых мы хотим объединить. Затем программа анализирует их и предлагает нам список найденных столбцов с указанием того, сколько раз столбец с подобным названием был обнаружен.
Вы должны указать те столбцы, данные из которых вы хотели бы объединить. Можете выбрать их все, можете – только самые важные.
Затем определяем, как нужно вставить собранные данные: целиком с формулами или только значения, либо сформировать ссылки на источники, чтобы обеспечить постоянное обновление и актуальность информации в случае внесения изменений в исходные таблицы.
Также можно указать, что необходимо сохранить исходное форматирование, если оно уникально в каждой таблице. Так вам, кстати, будет проще определить, откуда появились сведения в общем массиве, какая таблица является их источником.
И данные будут идеально скомпонованы по заголовкам столбцов:
Мы получили своего рода сводную таблицу с необходимой информацией.
Объединение определенных столбцов из нескольких листов.
А вот, как мне кажется, наиболее часто встречающаяся ситуация:
- у вас действительно большие листы с множеством разных столбцов,
- столбцы расположены на каждом из них по-разному, в произвольном порядке,
- необходимо объединить только самые важные из них в итоговую таблицу.
Запустите мастер объединения листов, как мы это делали в предыдущем примере, укажите нужные, а затем выберите соответствующие столбцы. Да, это так просто!
Все дальнейшие шаги мы уже описывали выше. В результате в итоговую таблицу попадают только данные из выбранных вами столбцов:
Эти примеры продемонстрировали только несколько инструментов слияния данных, но это еще не все! Немного поэкспериментировав, вы увидите, насколько полезны и удобны все функции, включенные в пакет.
Полнофункциональная ознакомительная версия Ultimate Suite доступна для загрузки в по этой ссылке.
Слияние листов в Excel с помощью кода VBA
Если вы опытный пользователь Excel и чувствуете себя комфортно с макросами и VBA, вы можете объединить несколько листов Excel в один, используя какой-нибудь сценарий.
Для этого на вкладке Разработчик (Developer) нажмите кнопку Visual Basic или воспользуйтесь сочетанием клавиш Alt+F11. В открывшемся окне добавьте новый модуль через меню Insert — Module и скопируйте туда текст вот такого макроса:
Sub CopyDataWithHeaders()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Delete the sheet "RDBMergeSheet" if it exist
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'Add a worksheet with the name "RDBMergeSheet"
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "RDBMergeSheet"
'Fill in the start row
StartRow = 2
'loop through all worksheets and copy the data to the DestSh
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> DestSh.Name Then
'Copy header row, change the range if you use more columns
If WorksheetFunction.CountA(DestSh.UsedRange) = 0 Then
sh.Range("A1:Z1").Copy DestSh.Range("A1")
End If
'Find the last row with data on the DestSh and sh
Last = LastRow(DestSh)
shLast = LastRow(sh)
'If sh is not empty and if the last row >= StartRow copy the CopyRng
If shLast > 0 And shLast >= StartRow Then
'Set the range that you want to copy
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
'Test if there enough rows in the DestSh to copy all the data
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "There are not enough rows in the Destsh"
GoTo ExitTheSub
End If
'This example copies values/formats, if you only want to copy the
'values or want to copy everything look below example 1 on this page
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
End If
Next
ExitTheSub:
Application.Goto DestSh.Cells(1)
'AutoFit the column width in the DestSh sheet
DestSh.Columns.AutoFit
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Function LastCol(sh As Worksheet)
On Error Resume Next
LastCol = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
End Function
Имейте в виду, что для правильной работы кода VBA все исходные листы должны иметь одинаковую структуру, одинаковые заголовки столбцов и одинаковый порядок столбцов.
В этой функции выполняется копирование данных со всех листов начиная со строки 2 и до последней строки с данными. Если шапка в ваших таблицах занимает две или более строки, то измените этот код, поставив вместо 2 цифры 3, 4 и т.д.:
'Fill in the start row
StartRow = 2
При запуске функция добавит в вашу книгу рабочий лист с именем RDBMergeSheet и скопирует на него ячейки из каждого листа в книге. Каждый раз, когда вы запускаете макрос, он
сначала удаляет итоговый рабочий лист с именем RDBMergeSheet, если он существует, а затем добавляет новый в книгу. Это гарантирует, что данные всегда будут актуальными после запуска кода. При этом формат объединяемых ячеек также копируется.
Ещё несколько интересных примеров кода VBA для объединения листов вашей рабочей книги вы можете найти по этой ссылке.
Как объединить два листа Excel в один по ключевому столбцу
Если вы ищете быстрый способ сопоставить и объединить данные из двух листов, вы можете либо использовать функцию Excel ВПР, либо воспользоваться мастером объединения таблиц Merge Two Tables.
Последний представляет собой удобный визуальный инструмент, который позволяет сравнивать две таблицы Excel по общему столбцу (столбцам) и извлекать совпадающие данные из справочной таблицы. На скриншоте ниже показан один из возможных результатов.
Более подробно его работа рассмотрена в этой статье.
Мастер объединения двух таблиц также включен в Ultimate Suite for Excel, как и множество других полезных функций.
Вот как вы можете объединить листы в Excel. Я надеюсь, что вы найдете информацию в этом коротком руководстве полезной. Если у вас есть вопросы, не стесняйтесь оставлять их в комментариях.
В процессе одновременной обработки нескольких таблиц иногда может потребоваться объединение содержащихся в них однотипных данных, что позволит существенно упростить дальнейшую работу с ними. К счастью, делать это вручную не надо, т.к. в программе Excel специально для таких случаев предусмотрена функция “Консолидация”. Давайте посмотрим, что это за инструмент и как с ним работать.
- Требования к таблицам
- Выполняем консолидацию
- Заключение
Требования к таблицам
Обращаем Ваше внимание на то, что воспользоваться “Консолидацией” получается не всегда. Чтобы это было возможно, исходные таблицы (могут быть расположены на одном листе или на разных листах/книгах) должны соответствовать следующим требованиям:
- в них не должно быть пустых строк/столбцов;
- к ним должны быть применены одни и те же шаблоны;
- названия их столбцов должны быть одинаковыми (но порядок может отличаться).
Выполняем консолидацию
В результате применения функции “Консолидация” формируется новая, так называемая, консолидированная таблица. Давайте пошагово разберем на практическом примере, как ее собрать из 3 таблиц, соответствующих требованиям, перечисленным выше. Итак, выполняем следующие действия:
- Жмем по значку создания нового листа, после чего программа автоматически добавит его справа от текущего и переключит нас на него. Подробная информация по данной операции представлена в нашей отдельной публикации – “Как добавить лист в Excel”.Примечание: Можно переместить добавленный лист в удобное для нас место (например в конец списка) с помощью зажатой левой кнопки мыши, “зацепив” его за вкладку с названием. Также лист можно переименовать при желании (режим редактирования запускается двойным щелчком по имени, завершается нажатием Enter).
- В добавленном листе встаем в ячейку, с которой планируем вставить консолидированную таблицу (в нашем случае оставляем выбранную по умолчанию). Затем переходим во вкладку “Данные”, находим группу инструментов “Работа с данным”, где щелкаем по значку “Консолидация”.
- На экране отобразится небольшое окошко с настройками инструмента.
- Здесь представлены следующие параметры:
- Функция – кликнув по текущему варианту мы откроем список возможных действий, среди которых выбираем то, которое требуется выполнить для консолидируемых данных:
- Сумма (выбрана по умолчанию; используется чаще всего, поэтому оставляем ее в качестве примера);
- Количество;
- Среднее;
- Максимум;
- Минимум;
- Произведение;
- Количество чисел;
- Стандартное отклонение;
- Несмещенное отклонение;
- Дисперсия;
- Несмещенная дисперсия.
- Функция – кликнув по текущему варианту мы откроем список возможных действий, среди которых выбираем то, которое требуется выполнить для консолидируемых данных:
- Переходим к полю “Ссылка”, щелкнув внутри него. Здесь мы поочередно выбираем диапазон ячеек исходных таблиц, которые должны быть обработаны. Для этого:
- Переключаемся на лист с первой таблицей.
- Видим, что в поле автоматически появилось название выбранного листа (но если смены листа не было, название добавлено не будет). Теперь с помощью зажатой левой кнопки мыши выделяем таблицу вместе с шапкой (например, от самой левой верхней ячейки до правой нижней). Убеждаемся, что координаты выбранных элементов корректно указаны в поле, после чего жмем кнопку “Добавить”. Кстати, указать/изменить координаты можно и вручную, введя их с помощью клавиатуры, но это не так удобно, как при работе с мышью, к тому же, в этом случае есть вероятность ошибиться.Примечание: чтобы выбрать диапазон из другого файла, предварительно открываем его в программе. Затем, запустив функцию консолидации в первой книге и находясь в поле “Ссылка”, переключаемся во вторую книгу, выбираем в ней нужный лист и выделяем требуемую область ячеек. При этом в начале ссылки обязательно должно добавиться имя файла. В нашем случае это не нужно, мы просто продемонстрировали, как это можно сделать.
- В результате в “Списке диапазонов” появилась первая запись, соответствующая выполненному нами выделению.
- Возвращаемся в поле “Ссылка”, удаляем содержащуюся в нем информацию, после чего добавляем в “Список диапазонов” координаты двух оставшихся таблиц.
- Теперь остаются только заключительные штрихи – напротив нужных опций ставим галочки:
- “Подписи верхней строки” – в результате консолидации в полученную таблицу автоматически будет добавлена шапка с учетом исходных данных.
- “Значения левого столбца” – требуется, чтобы была заполнена левая колонка соответствующими значениями.
- “Создавать связи с исходными данными” – очень важный параметр, включив который любые изменения первоначальных данных сразу же отобразятся в консолидированной таблице, которая, к тому же, будет сформирована с группировкой, что может быть очень удобно. Но стоит учитывать, что если в дальнейшем потребуется изменение структуры одной из исходных таблиц, процедуру придется выполнить повторно. Это же касается и случаев, когда галочка не установлена.
- По готовности нажимаем OK.
- Эксель сделает консолидацию данных и сформирует новую таблицу согласно заданным настройкам и выбранным опциям.В нашем случае – мы выбрали создание связи, поэтому получили группировку данных, которая позволяет отобразить/скрыть детализацию.
Заключение
Консолидация данных в программе Excel – это крайне удобный и полезный инструмент, с помощью которого работа, в первую очередь, с большими таблицами в значительной степени будет оптимизирована и автоматизирована, что позволит не только сэкономить время, но и сведет к минимуму возможные ошибки, которые могут возникнуть в результате ручной обработки данных.
Консолидация (объединение) данных из нескольких таблиц в одну
Способ 1. С помощью формул
Имеем несколько однотипных таблиц на разных листах одной книги. Например, вот такие:
Необходимо объединить их все в одну общую таблицу, просуммировав совпадающие значения по кварталам и наименованиям.
Самый простой способ решения задачи «в лоб» — ввести в ячейку чистого листа формулу вида
=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3
которая просуммирует содержимое ячеек B2 с каждого из указанных листов, и затем скопировать ее на остальные ячейки вниз и вправо.
Если листов очень много, то проще будет разложить их все подряд и использовать немного другую формулу:
=СУММ(‘2001 год:2003 год’!B3)
Фактически — это суммирование всех ячеек B3 на листах с 2001 по 2003, т.е. количество листов, по сути, может быть любым. Также в будущем возможно поместить между стартовым и финальным листами дополнительные листы с данными, которые также станут автоматически учитываться при суммировании.
Способ 2. Если таблицы неодинаковые или в разных файлах
Если исходные таблицы не абсолютно идентичны, т.е. имеют разное количество строк, столбцов или повторяющиеся данные или находятся в разных файлах, то суммирование при помощи обычных формул придется делать для каждой ячейки персонально, что ужасно трудоемко. Лучше воспользоваться принципиально другим инструментом.
Рассмотрим следующий пример. Имеем три разных файла (Иван.xlsx, Рита.xlsx и Федор.xlsx) с тремя таблицами:
Хорошо заметно, что таблицы не одинаковы — у них различные размеры и смысловая начинка. Тем не менее их можно собрать в единый отчет меньше, чем за минуту. Единственным условием успешного объединения (консолидации) таблиц в подобном случае является совпадение заголовков столбцов и строк. Именно по первой строке и левому столбцу каждой таблицы Excel будет искать совпадения и суммировать наши данные.
Для того, чтобы выполнить такую консолидацию:
- Заранее откройте исходные файлы
- Создайте новую пустую книгу (Ctrl + N)
- Установите в нее активную ячейку и выберите на вкладке (в меню) Данные — Консолидация (Data — Consolidate). Откроется соответствующее окно:
- Установите курсор в строку Ссылка (Reference) и, переключившись в файл Иван.xlsx, выделите таблицу с данными (вместе с шапкой). Затем нажмите кнопку Добавить (Add) в окне консолидации, чтобы добавить выделенный диапазон в список объединяемых диапазонов.
- Повторите эти же действия для файлов Риты и Федора. В итоге в списке должны оказаться все три диапазона:
Обратите внимание, что в данном случае Excel запоминает, фактически, положение файла на диске, прописывая для каждого из них полный путь (диск-папка-файл-лист-адреса ячеек). Чтобы суммирование происходило с учетом заголовков столбцов и строк необходимо включить оба флажка Использовать в качестве имен (Use labels). Флаг Создавать связи с исходными данными (Create links to source data) позволит в будущем (при изменении данных в исходных файлах) производить пересчет консолидированного отчета автоматически.
После нажатия на ОК видим результат нашей работы:
Наши файлы просуммировались по совпадениям названий из крайнего левого столбца и верхней строки выделенных областей в каждом файле. Причем, если развернуть группы (значками плюс слева от таблицы), то можно увидеть из какого именно файла какие данные попали в отчет и ссылки на исходные файлы:
Ссылки по теме
- Макрос для автоматической сборки данных с разных листов в одну таблицу
- Макрос для сборки листов из нескольких файлов