Как все листы в excel перенести в один макрос

Сборка данных со всех листов книги в одну таблицу

Постановка задачи

Допустим, что у нас есть книга с большим количеством листов, где на каждом листе находится таблица с данными по сделкам в этом городе:

Исходный файл

Давайте будем исходить из следующих соображений:

  • Структура и столбцов на всех листах одинаковая.
  • Количество строк на всех листах разное.
  • Листы могут в будущем добавляться или удаляться.

Наша задача — собрать все данные со всех листов в одну таблицу, чтобы потом с ней работать (фильтровать, сортировать, построить сводную и т.д.) Сделать это можно разными способами, но самыми удобными будут, пожалуй, Power Query и макросы.

Способ 1. Сборка данных с листов с помощью Power Query

Если вы ещё не сталкивались в своей работе с Power Query, то очень советую копнуть в этом направлении. Использование этой бесплатной и уже встроенной по умолчанию в Excel надстройки, способно полностью перевернуть весь ваш процесс сбора и анализа данных, упростив всё в разы. С задачей сбора данных с листов Power Query справляется весьма успешно.

Шаг 1. Подключаемся к файлу

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

Если у вас Excel 2010-2013 и вы установили Power Query как отдельную надстройку, то откройте вкладку Power Query, если у вас Excel 2016 или новее, то вкладку Данные (Data). Нажмите кнопку Получить данные / Создать запрос — Из файла — Книга Excel (Get Data / New Query — From file — From Excel) и укажите наш файл с исходными листами:

Указываем файл

В появившемся окне Навигатора (Navigator) выберите слева любой лист и нажмите в правом нижнем углу кнопку Преобразовать данные (Transform Data) или Изменить (Edit):

Выбираем любой лист

Должно появиться окно редактора запросов Power Query, где отобразятся данные с выбранного листа. Поскольку нам нужен, на самом деле, не один лист, а все, то удалим в правой панели все шаги, кроме первого шага Источник (Source) используя крестик слева от названия шага:

Удаляем лишние шаги

То, что останется после удаления шагов — это список всех объектов, которые Power Query «видит» во внешних файлах, а это:

  • листы (Sheet)
  • «умные таблицы» (Table)
  • именованные диапазоны (Defined Name)
  • области печати (Print Area), которые, по сути, являются одним из видов именованного диапазона

Шаг 2. Отбираем нужные листы

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

Во-первых, легко можно отфильтровать нужные объекты по типу по столбцу Kind. Например, если вам нужны только листы:

Фильтруем листы

Во-вторых, если нам нужны только видимые листы, то дополнительно можно отфильтровать ещё по столбцу Hidden.

В-третьих, если вы точно знаете размер таблиц, которые вам нужны, то можно легко добавить к нашему списку вычисляемый столбец с формулой, выводящей количество столбцов или строк и использовать потом эти числа для отбора. Для этого выберем на вкладке Добавление столбца — Настраиваемый столбец (Add Column — Custom Column) и введём в открывшееся окно следующую формулу (с учётом регистра):

Подсчет числа столбцов

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

В-четвёртых, можно извлечь с каждого листа содержимое любой ячейки (например, А1) и использовать его для отбора. Например, если там нет слова «Товар«, то это не наш лист. Для извлечения нужно будет также добавить вычисляемый столбец с такой конструкцией:

=[Data][Column1]{0}

Здесь:

  • [Data] — имя столбца, где в каждой ячейке лежат таблицы с содержимым каждого листа (убийственная формулировка для рядового пользователя Excel, да, я знаю)
  • [Column1] — имя столбца на листе, из которого мы хотим извлечь данные
  • {0} — номер строки (считая с нуля), откуда мы хотим взять данные

Извлекаем содержимое А1 с каждого листа

После фильтрации «мусора» все добавленные вспомогательные столбцы можно, конечно же, спокойно удалить, оставив только колонки Name и Data.

Шаг 3. Разворачиваем таблицы

Теперь развернём содержимое таблиц в одно целое, используя кнопку с двойными стрелками в заголовке столбца Data, отключив флажок Использовать исходное имя столбца как префикс (Use original column name as prefix):

Разворачиваем вложенные таблицы

После нажатия на ОК Power Query соберёт для нас все данные в одну мегатаблицу со всех отобранных листов нашего файла:

Собранные данные

Останется лишь «навести блеск», а именно:

  1. Поднять первую строку в шапку таблицы кнопкой Использовать первую строку в качестве заголовков (Use first row as headers) на вкладке Главная (Home).
  2. Переименовать первый столбец в Город двойным щелчком на заголовку.
  3. Удалить повторяющиеся шапки таблиц, попавшие в одну кучу вместе с данными, используя фильтр по столбцу Товар.

Всё. Осталось только дать нашему запросу подходящее имя (например, Сборка) в панели справа и выгрузить затем собранные данные обратно в Excel кнопкой Закрыть и загрузить на вкладке Главная (Home — Close & Load):

Собранные данные

В будущем, при любых изменениях в исходном файле достаточно будет лишь обновить наш запрос, щелкнув по собранной таблице правой кнопкой мыши и выбрав команду Обновить (Refresh) или такой же кнопкой на вкладке Данные (Data) или сочетанием клавиш Ctrl+Alt+F5.

Плюсы такого подхода:

  • Не нужно уметь программировать, всё делается быстро и почти без использования клавиатуры.
  • Последовательность столбцов на разных листах может быть различной — это не играет роли, столбцы правильно встанут друг под друга в итоговой сборке.
  • Можно быстро обновлять запрос при изменении исходных данных.

Минусы этого способа:

  • Собираются только значения, т.е. формулы с исходных листов не сохраняются.
  • Названия столбцов должны на всех листах совпадать с точностью до регистра.
  • Нельзя выбрать какой именно диапазон берётся с каждого листа — это определяется автоматически (берётся всё, что есть).
  • Для обновления нужен Excel 2016 или новее или установленная надстройка Power Query.

Способ 2. Сборка данных с листов макросом на VBA

Похожего результата можно добиться и с помощью более «классического» подохода — макросом на VBA. Для этого на вкладке Разработчик (Developer) нажмите кнпоку Visual Basic или воспользуйтесь сочетанием клавиш Alt+F11. В открывшемся окне добавьте новый модуль через меню Insert — Module и скопируйте туда текст вот такого макроса:

Sub CollectDataFromAllSheets()
    Dim ws As Worksheet
    
    Set wbCurrent = ActiveWorkbook
    Workbooks.Add
    Set wbReport = ActiveWorkbook
    
    'копируем на итоговый лист шапку таблицы из первого листа
    wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
    
    'проходим в цикле по всем листам исходного файла
    For Each ws In wbCurrent.Worksheets
    
        'определяем номер последней строки на текущем листе и на листе сборки
        n = wbReport.Worksheets(1).Range("A1").CurrentRegion.Rows.Count
        
        'задаем исходный диапазон, который надо скопировать с каждого листа - любой вариант на выбор:
        Set rngData = ws.Range("A1:D5")            'фиксированный диапазон или
        Set rngData = ws.UsedRange                 'всё, что есть на листе или
        Set rngData = ws.Range("F5").CurrentRegion    'область, начиная от ячейки F5 или
        Set rngData = ws.Range("A2", ws.Range("A2").SpecialCells(xlCellTypeLastCell))    'от А2 и до конца листа
        
        'копируем исходный диапазон и вставляем в итоговую книгу со следующей строки
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
        
    Next ws
End Sub

Запустить созданный макрос можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или с помощью сочетания клавиш Alt+F8. Макрос автоматически создаст новую книгу и скопирует туда нужные вам данные.

Плюсы такого подхода:

  • Формулы с исходных листов сохраняются в сборке.
  • Имена столбцов не играют роли.
  • Макрос будет работать в любой версии Excel.
  • Можно выбирать, что именно брать с каждого листа (конкретный фиксированный диапазон или весь лист).

Минусы этого способа:

  • Последовательность столбцов на всех листах должна быть одинаковой, т.к. происходит, по сути, тупое копирование таблиц друг-под-друга.
  • Защита от макросов должна быть отключена.
  • Быстрого обновления, как это было с Power Query, здесь, к сожалению, не будет. При изменении исходных данных придётся запустить макрос повторно.

Способ 3. Готовый макрос из надстройки PLEX

Если лень возиться с макросами или Power Query, то можно пойти по пути наименьшего сопротивления — использовать готовый макрос (кнопка Собрать) из моей надстройки PLEX для Excel. Это, может, и не спортивно, но зато эффективно:

Сборка данных с листов через PLEX

В общем, выбирайте любой удобный вам вариант и действуйте. Выбор — это всегда хорошо.

Ссылки по теме

  • Что такое Power Query и с чем его едят.
  • Как создавать свои макросы, использовать чужие и запускать их в своих файлах.
  • Сборка данных из нескольких файлов с помощью Power Query.

Skip to content

6 примеров — как консолидировать данные и объединить листы Excel в один

В статье рассматриваются различные способы объединения листов в Excel в зависимости от того, какой результат вы хотите получить:

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

Сегодня мы займемся проблемой, с которой ежедневно сталкиваются многие пользователи Excel, — как объединить листы Excel в один без использования операций копирования и вставки. Рассмотрим два наиболее распространенных сценария: объединение числовых данных (сумма, количество, среднее и т. д.) и объединение листов ( то есть копирование данных из нескольких листов в один).

Вот что мы рассмотрим в этой статье:

  • Объединение при помощи стандартного инструмента консолидации.
  • Как копировать несколько листов Excel в один.
  • Как объединить листы с различным порядком столбцов.
  • Объединение только определённых столбцов из нескольких листов
  • Слияние листов в Excel с использованием VBA
  • Как объединить два листа в один по ключевым столбцам

Консолидация данных из нескольких листов на одном.

Самый быстрый способ консолидировать данные в Excel (в одной или нескольких книгах) — использовать встроенную функцию Excel Консолидация.

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

Как вы видите на скриншоте ниже, четыре объединяемых листа имеют схожую структуру данных, но разное количество строк и столбцов:

Чтобы объединить всю эту информацию на одном листе, выполните следующие действия:

  1. Правильно расположите исходные данные. Чтобы функция консолидации Excel работала правильно, убедитесь, что:
    • Каждый диапазон (набор данных), который вы хотите объединить, находится на отдельном листе. Не помещайте данные на лист, куда вы планируете выводить консолидированные данные.
    • Каждый лист имеет одинаковый макет, и каждый столбец имеет заголовок и содержит похожие данные.
    • Ни в одном списке нет пустых строк или столбцов.
  2. Запустите инструмент «Консолидация». На новом листе, где вы планируете поместить результаты, щелкните верхнюю левую ячейку, начиная с которой должны отображаться консолидированные данные, затем на ленте перейдите на вкладку «Данные» и нажмите кнопку «Консолидация».

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

  1. Настройте параметры консолидации. Появляется диалоговое окно «Консолидация», и вы делаете следующее:
    • В поле «Функция» выберите одну из функций, которую вы хотите использовать для консолидации данных (количество, среднее, максимальное, минимальное и т. д.). В этом примере мы выбираем Сумма.
    • В справочном окне, нажав в поле Ссылка на значок  , выберите диапазон на первом листе. Затем нажмите кнопку «Добавить», чтобы присоединить его к списку диапазонов. Повторите этот шаг для всех листов, которые вы хотите объединить.

Если один или несколько листов находятся в другой книге, используйте кнопку «Обзор», чтобы найти эту книгу и использовать ее.

  1. Настройте параметры обновления. В том же диалоговом окне Консолидация выберите любой из следующих параметров:
    • Установите флажки «Подписи верхней строки» и / или «Значения левого столбца» в разделе «Использовать в качестве имён», если вы хотите, чтобы заголовки строк и / или столбцов исходных диапазонов были также скопированы.
    • Установите флажок «Создать связи с исходными данными», если нужно, чтобы консолидированные данные обновлялись автоматически при изменении исходных таблиц. В этом случае Excel создаст ссылки на ваши исходные листы, а также схему, как на следующем скриншоте:

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

Как видите, функция консолидации Excel очень полезна для сбора данных. Однако у нее есть несколько ограничений. В частности, он работает только для числовых значений и всегда обрабатывает эти числа тем или иным образом (сумма, количество, среднее и т. д.). Исходные цифры вы здесь не увидите.

Если вы хотите объединить листы в Excel, просто скопировав и объединив их содержимое, вариант консолидации не подходит. Чтобы объединить всего парочку из них, создав как бы единый массив данных, то вам из стандартных возможностей Excel не подойдёт ничего, кроме старого доброго копирования / вставки. 

Но если вам предстоит таким образом обработать десятки листов, ошибки при этом будут практически неизбежны. Да и затраты времени весьма значительны.

Поэтому для подобных задач рекомендую использовать один из перечисленных далее нестандартных методов для автоматизации слияния.

Как скопировать несколько листов Excel в один.

Как мы уже убедились, встроенная функция консолидации умеет суммировать данные из разных листов, но не может объединять их путем копирования данных на какой-то итоговый лист. Для этого вы можете использовать один из инструментов слияния и комбинирования, включенных в надстройку Ultimate Suite для Excel.

Для начала давайте будем исходить из следующих условий:

  • Структура таблиц и порядок столбцов на всех листах одинаковы.
  • Количество строк везде разное.
  • Листы могут в будущем добавляться или удаляться.

Итак, у вас есть несколько таблиц, содержащих информацию о различных товарах, и теперь вам нужно объединить эти таблицы в одну итоговую, например так, как на рисунке ниже:

Три простых шага — это все, что нужно, чтобы объединить выбранные листы в один.

1.       Запустите мастер копирования листов.

На ленте перейдите на вкладку AblebitsData, нажмите «Копировать листы (Copy Sheets)» и выберите один из следующих вариантов:

  1. Скопировать листы из каждой книги на один лист и поместить полученные листы в одну книгу.
  2. Объединить листы с одинаковыми названиями в один.
  3. Скопировать выбранные в одну книгу.
  4. Объединить данные из выбранных листов на один лист.

Поскольку мы хотим объединить несколько листов путем копирования их данных, то выбираем последний вариант:

1.       Выберите листы и, при необходимости, диапазоны для объединения.

Мастер копирования листов отображает список всех имеющихся листов во всех открытых книгах. Выберите те из них, которые хотите объединить, и нажмите « Далее».

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

В этом примере мы объединяем первые три листа нашей книги:

Совет. Если рабочие листы, которые вы хотите объединить, находятся в другой книге, которая в данный момент закрыта, нажмите кнопку «Добавить файлы …» , чтобы найти и открыть эту книгу.

2.       Выберите, каким образом произвести объединение.

На этом этапе вы должны настроить дополнительные параметры, чтобы ваша информация была объединена именно так, как вы хотите.

Как вставить :

  1. Вставить все – скопировать все данные (значения и формулы). В большинстве случаев это правильный выбор.
  2. Вставлять только значения – если вы не хотите, чтобы переносились формулы, выберите этот параметр.
  3. Создать ссылки на исходные данные – это добавит формулы, связывающие итоговые ячейки с исходными. Выберите этот параметр, если вы хотите, чтобы результат объединения обновлялся автоматически при изменении исходных файлов. Это работает аналогично параметру «Создать ссылки на исходные данные» в стандартном инструменте консолидации в Excel.

Как расположить :

  1. Разместите скопированные диапазоны один под другим – то есть вертикально.
  2. Расположить скопированные диапазоны рядом – то есть по горизонтали.

Как скопировать :

  • Сохранить форматирование – понятно и очень удобно.
    • Разделить скопированные диапазоны пустой строкой – выберите этот вариант, если вы хотите добавить пустую строку между сведениями, скопированными из разных листов. Так вы сможете отделить их друг от друга, если это необходимо.
    • Скопировать таблицы вместе с их заголовками. Установите этот флажок, если хотите, чтобы заголовки исходных таблиц были включены в итоговый лист.

На скриншоте ниже показаны настройки по умолчанию, которые нам подходят:

Нажмите кнопку «Копировать (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 В этом руководстве вы узнаете, как можно легко удалить пустые столбцы в Excel с помощью макроса, формулы и даже простым нажатием кнопки. Как бы банально это ни звучало, удаление пустых…
Как быстро объединить несколько файлов Excel Мы рассмотрим три способа объединения файлов Excel в один: путем копирования листов, запуска макроса VBA и использования инструмента «Копировать рабочие листы» из надстройки Ultimate Suite. Намного проще обрабатывать данные в…
Как работать с мастером формул даты и времени Работа со значениями, связанными со временем, требует глубокого понимания того, как функции ДАТА, РАЗНДАТ и ВРЕМЯ работают в Excel. Эта надстройка позволяет быстро выполнять вычисления даты и времени и без особых…
Как найти и выделить уникальные значения в столбце В статье описаны наиболее эффективные способы поиска, фильтрации и выделения уникальных значений в Excel. Ранее мы рассмотрели различные способы подсчета уникальных значений в Excel. Но иногда вам может понадобиться только просмотреть уникальные…
Как получить список уникальных значений В статье описано, как получить список уникальных значений в столбце с помощью формулы и как настроить эту формулу для различных наборов данных. Вы также узнаете, как быстро получить отдельный список с…
6 способов быстро транспонировать таблицу В этой статье показано, как столбец можно превратить в строку в Excel с помощью функции ТРАНСП, специальной вставки, кода VBA или же специального инструмента. Иначе говоря, мы научимся транспонировать таблицу.…
Как объединить две или несколько таблиц в Excel В этом руководстве вы найдете некоторые приемы объединения таблиц Excel путем сопоставления данных в одном или нескольких столбцах. Как часто при анализе в Excel вся необходимая информация собирается на одном…

anytka

0 / 0 / 0

Регистрация: 10.02.2013

Сообщений: 27

1

Обьединение нескольких листов данных в один макросом

11.02.2013, 18:24. Показов 41045. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте, подскажите пожалуйста.
У меня есть 30 листов с данными
Мне нужно объединить их в один лист. Как мне записать макрос?
Я копирую данные из первого листа выделяю до последней ячейки с данными, вставляю в общий лист, далее перехожу на новый лист, так же копирую данные, выделяю до последней ячейки. Но у меня кол-во ячеек в каждом листе может меняться, как правильно прописать код?

Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Rows("2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets("Общий").Select
    Range("A2").Select
    ActiveSheet.Paste
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("PIL2PIL_2").Select
    Rows("2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets("Общий").Select



0



Watcher_1

356 / 162 / 27

Регистрация: 21.06.2011

Сообщений: 350

11.02.2013, 21:29

2

Как смог, понял структуру вашего файла…
Кол-во заполненных строк проверяется по столбцу А

Visual Basic
1
2
3
4
5
6
7
8
9
Sub m()
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> "Общий" Then
           myR_Total = Sheets("Общий").Range("A" & Sheets("Общий").Rows.Count).End(xlUp).Row
           myR_i = Sheets(i).Range("A" & Sheets(i).Rows.Count).End(xlUp).Row
           Sheets(i).Rows("1:" & myR_i).Copy Destination:=Sheets("Общий").Range("A" & myR_Total + 1)
        End If
    Next
End Sub



1



Igor_Tr

4377 / 661 / 36

Регистрация: 17.01.2010

Сообщений: 2,134

11.02.2013, 23:24

3

Как раз что-то похожее делал для себя. Кидаю вариант и немного обясню. Предполагается, что у меня должен бы быть лист Общих данных «GenExMan» (в даном случае — обобщенный лист счетов с данными). Этот лист (раньше) был разделен так, что для каждого счета создался отдельный лист с именем счета и данными по этому счету. После создания отчета/обработки/ каждого счета, мне нужно опять опять все собрать на новый лист «MergeRecords» и потом вернуть на Android. Представленный код — это фрагмент общего, который все и собирает.
И еще — тут использована функция проверки наличия листа в книге. Если нужно будет — докину (хотя я ее где-то здесь уже выставлял). Старые коментарии — украинским, новые (для Вас) — русским. У меня все работает как часы. Пробуйте.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Sub ConsolidateAllSheet()
    Application.ScreenUpdating = False
    ' Проверяем наличие основного листа, с которого будет получено _
          список уникальных названий счетов
    If Not fun_SheetExists("GenExMan") Then ' 
        MsgBox "АРКУШ   " & "GenExMan" & "   ВІДСУТНІЙ."
        Exit Sub
            Else: Sheets("GenExMan").Select
    End If
    ' Проверяем наличие в книге листа, в который будем собирать _
           нужные нам листы.
    If Not fun_SheetExists("MergeRecords") Then
        Sheets.Add ' создаем
            With ActiveSheet
                .Name = "MergeRecords" ' именуем
                .Tab.ColorIndex = 10 ' красим ярлык
            End With ' ActiveSheet
        Sheets("GenExMan").Select
             ' Очищаем "собирательный лист" для новых данных
            Else: Sheets("MergeRecords").Cells.Delete ' _
                                    вивільнюємо аркуш для перезапису.
    End If
    Application.ScreenUpdating = True
    
    Set Dict = CreateObject("Scripting.dictionary") ' создаем словарь
 
    With Sheets("GenExMan")
        Set mRng = Range(.Cells(1, 1), _
                        Cells(1, .UsedRange.Columns.Count))
        counter = 0
        For Each CurrCell In mRng
            counter = counter + 1
            ReDim Preserve arr1(counter)
            arr1(counter) = mRng.Cells(counter) ' _
                                            Назви полів - в масив.
        Next ' CurrCell
        With Sheets("MergeRecords")
            .Cells(1).Resize(1, UBound(arr1)).Value = arr1
        End With
        Erase arr1 ' вивільнення пам'яті.
        With mRng
           ' Определяем в общем листе номер столбца с названиями счетов
            mstr = "Account" ' Знаходимо поле з значенням _
                         "Account" - це будуть ключі Dict.
            Set CurrCell = .Find(What:=mstr, _
                            LookAt:=xlWhole, SearchFormat:=False)
                If mRng Is Nothing Then
                    MsgBox "Не   знайдено !": Exit Sub
                        Else: mCol = CurrCell.Column
                End If
        End With ' mRng
        ' Выбираем уникальные названия счетов
        For i = 2 To .UsedRange.Rows.Count ' отримую _
                                       перелік назв рахунків.
            If Not Dict.exists(Trim(.Cells(i, mCol).Value)) Then
                Dict.Add key:=Trim(.Cells(i, mCol).Value), _
                                        Item:=Trim(.Cells(i, mCol).Value)
            End If
        Next 'i
    End With
    ' Заливаем уникальные названия счетов в массив genKeys. _
           В данном случае ними будут и ключи, и значения словаря. 
    genKeys = Dict.keys ' ключі словника - в масив.
    Set Dict = Nothing ' видаляємо словник.
    ' Ниже - просто проверка при отладке.
''--Results--Verification------------------------
'Stop
'    Application.SendKeys "^g^a {Del}"
'    For i = LBound(genKeys) To UBound(genKeys)
'        Debug.Print genKeys(i)
'    Next 'i
''==End==Verification======================
 
     ' А вот этот коротенький код уже собственно перебирает _
       раздельные листы счетов, заганяет по каждому листу _
       значения в массив  mArr ...
'Stop
    For i = LBound(genKeys) To UBound(genKeys)
        Erase mArr ' очищаємо масив
        With Sheets(genKeys(i))
            mArr = Range(.Cells(2, 1), _
                .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Value
        End With
    '... и, наконец, выгружает массив mArr  на сборочный лист "MergeRecords".
'Stop
        With Sheets("MergeRecords")
            r = .UsedRange.Rows.Count + 1
            .Cells(r, 1).Resize(UBound(mArr, 1), _
                    UBound(mArr, 2)).Value = mArr
        End With
    Next 'i
 Stop
        
End Sub



1



0 / 0 / 0

Регистрация: 22.01.2016

Сообщений: 1

22.01.2016, 20:29

4

Igor_Tr, вечер добрый, не могли бы вы подсказать как использовать ваш макрос в своей таблице?
Лист1 — 44 составляющих для отбора по всем листам ( всего листов 160)



0



Nyusya

0 / 0 / 0

Регистрация: 13.10.2015

Сообщений: 1

08.08.2016, 09:43

5

Цитата
Сообщение от Watcher_1
Посмотреть сообщение

Как смог, понял структуру вашего файла…
Кол-во заполненных строк проверяется по столбцу А

Visual Basic
1
2
3
4
5
6
7
8
9
Sub m()
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> "Общий" Then
           myR_Total = Sheets("Общий").Range("A" & Sheets("Общий").Rows.Count).End(xlUp).Row
           myR_i = Sheets(i).Range("A" & Sheets(i).Rows.Count).End(xlUp).Row
           Sheets(i).Rows("1:" & myR_i).Copy Destination:=Sheets("Общий").Range("A" & myR_Total + 1)
        End If
    Next
End Sub

Доброго дня!
Случайно забрела сюда в поиске макроса по сбору данных и нашла именно то, что нужно.
Только два вопросика, как в данный макрос можно добавить имена листов, откуда копируются данные и каеую команду добавить, чтобы вставлялись значения вместо формул. Заранее благодарю!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

08.08.2016, 09:43

5

Консолидация данных с нескольких листов

​Смотрите также​​Похоже на Вашу​ 0​ список 1048576 значениями.​avFiles = Application.GetOpenFilename(«Excel files(*.csv*),*.csv*»,​ — их названия​ с листов Киев,​Sub sbor()​ диапазон в список​ Потом произошло обновление​ а затем вернитесь​ для каждого исходного​ каждому из этих​, а другой —​Все ссылки​Совет:​ области, в которой​Примечание:​ проблему?​’Запрос сбора данных​Hugo​

​ , «Выбор файлов»,​ ставите как названия​ Одесса соответствующее значениям​With Sheets(2): arr1​ объединяемых диапазонов.​ данных, снова собрал​ в мастер сводных​ диапазона, а также​ отделов, а также​Среднее​.​ Чтобы указать ссылку на​ требуется разместить консолидированные​ Мы стараемся как можно​jurafenix​

​ с книг(если Нет​: Ну так данные​ , True)​ городов (т.е. формируете​ в колонке Имя​ = .Range(.Cells(1), .Cells.SpecialCells(xlCellTypeLastCell)):​Повторите эти же действия​ данные первые данные​ таблиц и диаграмм​ элемент для консолидации​ элемент, содержащий сводные​, консолидация не просуммирует​После добавления данных из​ ячейку — например,​ данные.​ оперативнее обеспечивать вас​

​: Похоже, но названия​​ — то сбор​ ведь собрали.​If VarType(avFiles) = vbBoolean​ массив — делайте​ в итоговую таблицу​ End With​ для файлов Риты​ удалились (пустые ячейки),​ и нажмите кнопку​ всех диапазонов, сделайте​ данные. В примере​ эти столбцы.​

Способов консолидации данных

​ всех исходных листов​ продажи! B4 —​Примечание:​

​ актуальными справочными материалами​​ листов определенные нужны,​ идет с активной​А открывать csv​ Then Exit Sub​ сразу двухмерный). Затем,​ в колонку соответствующего​With Sheets(3): arr2​ и Федора. В​ а новые данные​Добавить​

​ следующее:​​ ниже показана сводная​Откройте каждый из исходных​ и книг нажмите​ в формуле, не​ Чтобы избежать перезаписи существующие​ на вашем языке.​ т.к. с других​ книги)​ можно другими программами,​bPolyBooks = True​ в этом же​

  • ​ города.​ = .Range(.Cells(2, 1),​ итоге в списке​ добавились в конец​.​Добавьте мастер сводных таблиц​ таблица, в которой​ листов.​ кнопку​ вводя, введите формулу​ данные в основном​

​ Эта страница переведена​​ листов данные переносить​If MsgBox(«Собрать данные​ которые для этого​lCol = 1​ цикле создаете коллекцию​Пример в приложении.​

Как для консолидации

​ .Cells.SpecialCells(xlCellTypeLastCell)): End With​ должны оказаться все​ таблицы.​Совет:​

  1. ​ и диаграмм на​ выбраны одно поле​На конечном листе щелкните​ОК​

    • ​ до того места,​ листе, убедитесь, оставьте​ автоматически, поэтому ее​ не требуется…​ с нескольких книг?»,​ предусмотрены.​Else​ уникальных имен, и​Очень нужна помощь.​Sheets(5).Cells(1).Resize(UBound(arr1), UBound(arr1, 2)).Value​ три диапазона:​Излишнее цитирование удалено администрацией​

    • ​ Если диапазон ячеек находится​ панель быстрого доступа.​ страницы и несколько​ верхнюю левую ячейку​.​ куда требуется вставить​ достаточно ячеек справа​ текст может содержать​jurafenix​

    • ​ vbInformation + vbYesNo,​Подбить статистику можно​

  2. ​avFiles = Array(ThisWorkbook.FullName)​ еще одним циклом​ В примере всего​ = arr1​Обратите внимание, что в​

    ​- это нарушение​​ в другой книге,​ Для этого:​ элементов.​ области, в которой​Для консолидации по категории​ ссылку, а затем​

  3. ​ и верхний угол​​ неточности и грамматические​​: Спасибо огромное!) Как​​ «Excel-VBA») = vbYes​​ макросом.​​End If​​ заносите в тот​

    Группа

  4. ​ 1 книга на​​Sheets(5).Cells(UBound(arr1) + 1,​​ данном случае Excel​ п.5j Правил форума​ сначала откройте ее,​Щелкните стрелку рядом с​Если велика вероятность того,​

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

    Диалоговое окно

  5. ​ консолидированные данные.​

    ​ ошибки. Для нас​​ раз то, что​​ Then​​Или например использовать​​’отключаем обновление экрана, автопересчет​ же массив показатели​ 2 листа, а​

    Кнопка

    ​ 1).Resize(UBound(arr2), UBound(arr2, 2)).Value​ запоминает, фактически, положение​boa​ чтобы упростить выбор​​ панелью инструментов и​​ что в следующий​ данные.​​ каждом из исходных​​ клавишу tab и​
    ​Нажмите кнопку​ важно, чтобы эта​ нужно.​avFiles = Application.GetOpenFilename(«Excel​​ Access.​​ формул и отслеживание​ с листов к​ обработать нужно 6​​ = arr2​​ файла на диске,​​: werty456,​​ данных.​ выберите​ раз при консолидации​Примечание:​ листов должен иметь​ затем щелкните ячейку.​

    ​данные​ статья была вам​:hands: А позволите​

    Диалоговое окно

  6. ​ files(*.xls*),*.xls*», , «Выбор​​jurafenix​​ событий​​ соответствующим именам (это​​ книг в каждой​End Sub​ прописывая для каждого​

  7. ​Замените строку​​В разделе​Дополнительные команды​ данных исходный диапазон​ Убедитесь, что справа и​ формат списка без​​ Excel будет завершена​>​​ полезна. Просим вас​ еще усложнить задачу?)​ файлов», , True)​

    ​: Доброго времени суток,​​’для скорости выполнения кода​

    • ​ строки) и в​ из которых более​RLGrime​ из них полный​

    • ​Range(«A10:K» & iLastRow).Clear​Во-первых, укажите количество полей​.​ данных изменится (например,​ снизу достаточно свободных​ пустых строк и​ адрес имя и​Консолидация​ уделить пару секунд​Нужно чтобы с​If VarType(avFiles) =​ уважаемые форумчане!​ и для избежания​ соответствующий город (столбцы​ 50 листов.​: sboy, Спасибо огромное)​

  8. ​ путь (диск-папка-файл-лист-адреса ячеек).​​на​​ страницы сводной таблицы​В списке​ изменится число строк),​ ячеек для консолидированных​ столбцов. Кроме того,​ ячейку листа для​(в группе​

    • ​ и сообщить, помогла​ Листа 1 и​ vbBoolean Then Exit​Вновь возник вопрос,​ ошибок, если в​ массива).​Перешерстила весь форум,​

    • ​ Все работает, то​ Чтобы суммирование происходило​КодRange(«A10:K» & iLastRow).EntireRow.Delete​щелкните число полей,​Выбрать команды из​ рекомендуется задать имя​

Консолидация данных с помощью формул

​ данных.​ категории должны быть​ вас.​

​Работа с данными​ ли она вам,​ Листа 2 Данные​ Sub​ ответ на который​ книгах есть иные​Выгружаете через resize​ есть похожие темы,​ что нужно)​ с учетом заголовков​либо после очищения​ которые вы хотите​выберите пункт​

Ссылка на несколько листов в формуле Excel

​ для каждого из​​На вкладке​ названы одинаково. Например,​Примечание:​).​ с помощью кнопок​ копировались в следующесм​bPolyBooks = True​ на страницах нашего​ коды​ массив.​ но решения моей​RLGrime​ столбцов и строк​ делайте ресайз таблицы​ использовать.​​Все команды​​ исходных диапазонов на​Данные​ если один из​формулы в таких​Выберите в раскрывающемся списке​ внизу страницы. Для​ порядке:​lCol = 1​

​ замечательного форума я​With Application​Z​

​ задачи не нашла:(​: sboy, А еще​ необходимо включить оба​werty456​В группе​.​ разных листах. Эти​в разделе​ столбцов называется​ случаях может быть​Функция​ удобства также приводим​

Объемная ссылка на листы в формуле Excel

support.office.com

Объединение данных с нескольких листов

​1 столбец в​​Else​ не нашел.​lCalc = .Calculation​: В разделе «Ссылки»​Спасибо!​ вопрос, если добавить​ флажка​: Спасибо большое​Затем выберите диапазон в​Выберите в списке пункт​ имена можно использовать​Сервис​Сред.​ ошибкам, поскольку очень​функцию, которую вы​ ссылку на оригинал​ 1 столбец​avFiles = Array(ThisWorkbook.FullName)​Имеется файл с​.ScreenUpdating = False: .EnableEvents​ есть адресок одного​

​Kuzmich​ к сборке еще​Использовать в качестве имен​Kuzmich​ списке и укажите​Мастер сводных таблиц и​ при консолидации диапазонов​нажмите кнопку​, а другой —​ просто случайно выбираемых​ хотите использовать для​ (на английском языке).​3 столбец во​End If​ данными на 4​ = False: .Calculation​ прибамбаса для сбора​: Измените чуть-чуть структуру​ и 4й лист,​(Use labels)​: Не, нормально…​ метку элемента в​

​ диаграмм​ на главном листе.​Консолидация​Среднее​ неправильной ячейки. Также​ консолидации данных. По​Для подведения итогов и​ 2​’отключаем обновление экрана,​ листах. Требуется на​ = xlManual​ чегой-то… Словом, делов-то​ ваших таблиц,​ как это реализовать?​. Флаг​Макрос я писал,​ каждом из доступных​и нажмите кнопку​

​ В случае расширения​.​, консолидация не просуммирует​

Консолидация по расположению

​ может быть сложно​ умолчанию используется значение​ результатов из отдельных​4 в 3​ автопересчет формул и​ пятом листе собрать​End With​

  1. ​ на 5-10 минут​перенесите все на​ Я в этом​Создавать связи с исходными​ старался,​

  2. ​ окон полей. Повторите​Добавить​ исходного диапазона перед​Выберите в раскрывающемся списке​ эти столбцы.​

    ​ ошибку сразу после​​ СУММ.​ листов, можно объединить​5 в 4​ отслеживание событий​

  3. ​ данные с тех​​’создаем новый лист в​​ и получите… ;)​​ лист Итого и​​ просто 2по5, сам​​ данными​​но спасибо не​

    Кнопка

  4. ​ операцию для каждого​​, а затем — кнопку​​ обновлением сводной таблицы​функцию​

  5. ​Откройте каждый из исходных​ ввода сложные формулы.​

    ​Вот пример, в котором​ данные из каждого​​и 7 в 5​​’для скорости выполнения​

  6. ​ четырех листов в​ книге для сбора​ И таких варьянтов…​ используйте сводную таблицу​​ не могу решить.​​(Create links to source​

Консолидация по категории

​ дождался!​ диапазона​ОК​ можно обновить диапазон​, которую требуется использовать​ листов.​Если данные для консолидации​ выбраны три диапазоны​ листа в главном​С листа 3​ кода и для​​ первый столбец -​​Set wsDataSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))​​ps Одна беда:​​vikiviki​ Попробовал, получается добавляет​

  1. ​ data)​werty456​

  2. ​для каждого из​.​ на отдельном листе​ для консолидации данных.​На конечном листе щелкните​

    ​ находятся в одинаковых​​ листа:​ листе. Листы может​ данные копировались в​ ибежания ошибок, если​

  3. ​ первый столбец, во​​’если нужно сделать сбор​​ надо мал-мал ручками​​: Для примера отлично​​ только 2 позиции.​​позволит в будущем​​:​

    Кнопка

  4. ​ полей страницы выберите​​В книге щелкните пустую​​ для указанного имени​Установите флажки в группе​

  5. ​ верхнюю левую ячейку​​ ячейках разных листов:​​Выделите данные.​ быть в той​ следующем порядке​​ в книгах есть​​ второй — третий,​​ данных на новый​​ и головой -11183-​ сработает. Но в​

  6. ​ Если не сложно​ (при изменении данных​Kuzmich​ диапазон ячеек, а​ ячейку, которая не​ таким образом, чтобы​Использовать в качестве имен​

    ​ области, в которой​Ввод формулы с трехмерной​​Далее в поле​​ же книге как​

  7. ​1 столбец в​ иные коды​ в третий -​ лист книги с​​Kuzmich​​ работе применить такое​

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

Консолидация по расположению

​ ссылки, которая использует​ссылка​ главном листе или​ 1 столбец​With Application​ четвертый. В массивах​ кодом​

  1. ​: На листе «ИТОГО»​ решение не удастся.​ уже отстану) Спасибо.​ производить пересчет консолидированного​ долго не отвечал​

  2. ​ имя.​ таблицы.​ новые данные.​ исходных диапазонах находятся​ данные.​

    ​ ссылку на диапазон​​нажмите кнопку​ в других книгах.​2 столбец в​lCalc = .Calculation​

  3. ​ пустых строк нет,​​’Set wsDataSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))​​ макрос, собирающий данные​​ Так как придется​​sboy​​ отчета автоматически.​​Спасибо большое​

    Вкладка

  4. ​Пример​​На странице​​В Excel также доступны​ названия:​

  5. ​Примечание:​ имен листов. Например​Свернуть​​ При объединении данных,​​ 5​

    ​.ScreenUpdating = False:​ т.е. можно сделать​​’цикл по книгам​​ со всех листов​

  6. ​ перекроить форму более​: Добавить еще массив​После нажатия на​P.S. Перебои с​​Если в разделе​​Шаг 1​

Консолидация по категории

​ другие способы консолидации​подписи верхней строки​ Убедитесь, что справа и​ для консолидации данных​, чтобы уменьшить масштаб​ чтобы упростить можно​3 столбец в​ .EnableEvents = False:​ условие до первой​For li = LBound(avFiles)​(города) книги и​​ 300 таблиц, что​​Если листов много,​​ОК​​ интернетом(((​Во-первых, укажите количество полей​

  1. ​мастера выберите параметр​ данных, которые позволяют​

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

    ​ 4​​ .Calculation = xlManual​ пустой ячейки. Может​ To UBound(avFiles)​ строящий сводную таблицу​

  3. ​ отнюдь не сэкономить​​ то имеет смысл​​видим результат нашей​​Имеем несколько однотипных таблиц​​ страницы сводной таблицы​​в нескольких диапазонах консолидации​​ работать с данными​

    Вкладка

  4. ​значения левого столбца​​ ячеек для консолидированных​​ A2 по продажам​ данные на листе.​

  5. ​ обработки при необходимости​​5 столбец во​​End With​ есть какие мысли?)​If bPolyBooks Then​​ по этим данным.​​ время, а скорее​​ переделать на цикл​​ работы:​ на разных листах​

  6. ​задано число​, а затем нажмите​ в разных форматах​либо оба флажка​ данных.​ через маркетинга включительно,​Щелкните лист, содержащий данные,​ собирать данные.​​ 2​​’создаем новый лист​

    ​Заранее спасибо!​Set wbAct = Workbooks.Open(Filename:=avFiles(li))​​dnsel​​ наоборот. Более того​

  7. ​ по листам​Наши файлы просуммировались по​ одной книги. Например,​1​​ кнопку​​ и макетах. Например,​

    ​ одновременно.​​На вкладке​ в ячейке E5​ которые требуется консолидировать​Например, если в каждом​Выполнимо?)​ в книге для​К сожалению файл​

support.office.com

Консолидация нескольких листов в одной сводной таблице

​Else​: Доброго времени суток​ форма является утвержденной,​Sub sbor()​ совпадениям названий из​ вот такие:​, выберите каждый из​Далее​ вы можете создавать​Выделите на каждом листе​Данные​ главном листе вы​ данные и нажмите​ из региональных офисов​Эффект желательно, чтобы​ сбора​ приложить не смогу,​Set wbAct = ThisWorkbook​ всем!​ что затрудняет изменении​

Консолидация нескольких диапазонов

​With Sheets(2): arr1​ крайнего левого столбца​Необходимо объединить их все​ диапазонов, а затем​.​ формулы с объемными​ нужные данные. Не​в группе​ бы введите следующие​ кнопку​ есть свой лист​ был как от​ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)​ т.к.:​End If​Есть потребность собрать​

​ ее структуры в​ = .Range(.Cells(1), .Cells.SpecialCells(xlCellTypeLastCell)):​ и верхней строки​ в одну общую​​ введите уникальное имя​​На странице​ ссылками или использовать​ забудьте включить в​Работа с данными​ данные:​Развернуть диалоговое окно​ расходов, с помощью​ вашего макроса)))​Set wsDataSheet =​

Настройка исходных данных

​1. Нахожусь на​oAwb = wbAct.Name​ данные из нескольких​ дальнейшем.​ End With​ выделенных областей в​ таблицу, просуммировав совпадающие​ в поле​Шаг 2а​ команду​ них ранее выбранные​нажмите кнопку​Примечание:​справа, чтобы вернуться​ консолидации можно свести​

Образцы источников данных для консолидации в сводный отчет

Поля страницы при консолидации данных

​jurafenix​ ThisWorkbook.ActiveSheet​ работе, где интернет​’цикл по листам​ файлов excel на​Можно ли использовать​With Sheets(3): arr2​ каждом файле. Причем,​ значения по кварталам​Первое поле​выберите параметр​Консолидация​ данные из верхней​Консолидация​Мы стараемся как​ в диалоговое окно​ эти данные на​: Всё, окончательная структура​’цикл по книгам​ через удаленное рабочее​For Each wsSh In​

Образец сводного отчета с полем страницы.

Использование именованных диапазонов

​ один лист.​ макрос для решения​ = .Range(.Cells(2, 1),​ если развернуть группы​ и наименованиям.​. Если у вас​Создать одно поле страницы​(доступную на вкладке​ строки или левого​.​ можно оперативнее обеспечивать​Консолидация​ главном листе корпоративных​ файла утверждена и​For li =​ место без возможности​ wbAct.Sheets​Структура всех файлов​ такой задачи?​ .Cells.SpecialCells(xlCellTypeLastCell)): End With​ (значками плюс слева​Самый простой способ решения​

Другие способы консолидации данных

​ четыре диапазона, каждый​, а затем нажмите​Данные​ столбца. Затем нажмите​Выберите в раскрывающемся списке​ вас актуальными справочными​.​ расходов. Главный лист​ пример проработан)​ LBound(avFiles) To UBound(avFiles)​​ закачивания файлов​​If wsSh.Name Like sSheetName​​ одинакова, есть такой​​Z​​With Sheets(4): arr3​​ от таблицы), то​

Консолидация нескольких диапазонов

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

Консолидация данных без использования полей страницы

​Задача следующая:​If bPolyBooks Then​2. В файле​ Then​ код, все вроде​

  1. ​: off​ = .Range(.Cells(2, 1),​ можно увидеть из​ — ввести в​

    1. ​ кварталу финансового года,​Далее​Работа с данными​​Добавить​​, которую требуется использовать​

    2. ​ языке. Эта страница​​ данные, которые необходимо​​ итоговые и средние​​Нужно чтобы с​​ Workbooks.Open Filename:=avFiles(li)​

    3. ​ содержатся конфедициальные сведения​​’Если имя листа совпадает​ работает, но периодически​​Будьте решительнее, ведь​​ .Cells.SpecialCells(xlCellTypeLastCell)): End With​​ какого именно файла​​ ячейку чистого листа​​ выберите первый диапазон,​

  2. ​.​).​.​ для консолидации данных.​

  3. ​ переведена автоматически, поэтому​ объединить в другой​

  4. ​ значения продаж, данные​​ Листа «ОСВрубли7777» и​​oAwb = Dir(avFiles(li),​​ (банк).​​ с именем листа,​ падает с ошибкой​​ вы не испрашиваете​​Sheets(5).Cells(1).Resize(UBound(arr1), UBound(arr1, 2)).Value​

  5. ​ какие данные попали​​ формулу вида​​ введите имя «Кв1»,​​На странице​​Для консолидации нескольких диапазонов​Путь к файлу вводится​​Установите флажки в группе​​ ее текст может​

  6. ​ книге, нажмите кнопку​​ о складских запасах​​ Листа «ОСВрублиБФ» Данные​

    1. ​ vbDirectory)​Если без файла​ в который собираем​ 1004:​ разрешение на написание​ = arr1​​ в отчет и​​=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3​

      ​ выберите второй диапазон,​​Шаг 2б​ вы можете воспользоваться​ в поле​Использовать в качестве имен​ содержать неточности и​

    2. ​Обзор​​ и информацию о​ копировались в следующесм​​’цикл по листам​​ не получится, попробую​​ данные​Данные не могут​​ макроса, а «тонко​​Sheets(5).Cells(UBound(arr1) + 1,​

  7. ​ ссылки на исходные​​которая просуммирует содержимое ячеек​​ введите имя «Кв2″​сделайте следующее:​ мастером сводных таблиц​Все ссылки​, указывающие, где в​ грамматические ошибки. Для​​, чтобы найти необходимую​​ самых популярных товарах​

Консолидация данных с использованием одного поля страницы

​ порядке:​For Each wsSh​ вечером что-то похожее​’и сбор идет только​ быть вставлены из=за​ намекаете» на то,​ 1).Resize(UBound(arr2), UBound(arr2, 2)).Value​

  1. ​ файлы:​ B2 с каждого​ и повторите процедуру​Перейдите в книгу и​

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

    2. ​ в рамках всей​​1 столбец в​​ In Workbooks(oAwb).Sheets​​ выложить…​​ с активной книги​

    3. ​ несоответствия формы и​​ чтобы кто-то его​ = arr2​​Предположим, имеется куча книг​​ из указанных листов,​​ для диапазонов «Кв3″​​ выделите диапазон ячеек,​​ нем можно указать,​

  2. ​После добавления данных из​ названия:​ эта статья была​ и нажмите кнопку​

  3. ​ компании.​​ 1 столбец​​If wsSh.Name Like​​Прошу прощения за​​ — то переходим​ размеров области копирования​​ для вас нашел​​Sheets(5).Cells(UBound(arr1) + UBound(arr2)​

  4. ​ Excel, все листы​​ и затем скопировать​​ и «Кв4».​​ а затем вернитесь​​ сколько полей страницы​ всех исходных листов​​подписи верхней строки​​ вам полезна. Просим​

  5. ​ОК​​Совет:​​3 столбец во​

    1. ​ sSheetName Then​ неудобства​ к следующему листу​ и области вставки…..​ или написал… Поскольку​ + 1, 1).Resize(UBound(arr3),​​ из которых надо​​ ее на остальные​

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

  6. ​, Excel в поле​​ Если вы часто консолидировать​​ 2​

  7. ​’Если имя листа​​В интернете нашел​​If wsSh.Name = wsDataSheet.Name​Выделяет эту строку:​ сами не беретесь​ UBound(arr3, 2)).Value =​ объединить в один​ ячейки вниз и​​Во-первых, укажите количество полей​​ таблиц и диаграмм​

Консолидация данных с использованием нескольких полей страницы

​ одного, одно или​ кнопку​значения левого столбца​ секунд и сообщить,​ссылка​ данные, он помогут​4 в 3​ совпадает с именем​ такой интересный код,​ And bPolyBooks =​wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues​ — заказывайте… ;)​ arr3​ файл. Копировать руками​ вправо.​ страницы сводной таблицы​ и нажмите кнопку​ несколько.​ОК​

  1. ​либо оба флажка​ помогла ли она​введите путь к​ создать новые листы​

    1. ​5 в 4​ листа, в который​ а ума переделать​​ False Then GoTo​​Помогите, пожалуйста, код​

    2. ​ -89753-​​End Sub​​ долго и мучительно,​​Если листов очень много,​​задано число​

    3. ​Добавить​​Чтобы объединить данные всех​.​​ одновременно.​​ вам, с помощью​​ файлу и добавление​​ на основе шаблона​​6 в 5​

  2. ​ собираем данные​ под себя не​ NEXT_​ прикладываю (он не​

  3. ​Baklanoff​​krosav4ig​​ поэтому имеет смысл​​ то проще будет​​2​.​​ диапазонов и создать​​Примечание:​

  4. ​Выделите на каждом листе​​ кнопок внизу страницы.​​ восклицательный знак, путь​​ с единообразным макетом.​​и 8 в 6​’и сбор идет​​ хватает. В данном​​With wsSh​

  5. ​ мой)​​: Вот как? А​​: Можно использовать форму​

    1. ​ использовать несложный макрос.​ разложить их все​, выполните аналогичные действия​Совет:​ консолидированный диапазон без​ Любые названия, не совпадающие​​ нужные данные. Не​​ Для удобства также​

      ​ к. Чтобы выбрать​​ Дополнительные сведения о​С листа «Банк2рубли»​ только с активной​ коде имена листов​Select Case iBeginRange.Count​

    2. ​Скрытый текстSub Consolidated_Range_of_Books_and_Sheets()​​ я уже почти​ для выбора листов​​Открываем книгу, куда хотим​ подряд и использовать​ в поле​

    3. ​ Если диапазон ячеек находится​​ полей страницы, сделайте​ с названиями в​ забудьте включить в​ приводим ссылку на​ другие данные можно​ шаблонах читайте в​ данные копировались в​​ книги — то​ задаются, а мне​Case 1 ‘собираем данные​Dim iBeginRange As Object,​ дописал :(​

      ​Private Sub CommandButton1_Click()​

      • ​ собрать листы из​​ немного другую формулу:​Первое поле​​ в другой книге,​​ следующее:​​ других исходных областях,​ них ранее выбранные​ оригинал (на английском​ нажмите Продолжить.​​ статье: Создать шаблон.​​ следующем порядке​ переходим к следующему​ нужно с нескольких​ начиная с указанной​ lCalc As Long,​Ну ладно, раз​Me.Hide​ других файлов, входим​=СУММ(‘2001 год:2003 год’!B3)​. Затем выберите два​ сначала откройте ее,​

      • ​Добавьте мастер сводных таблиц​​ могут привести к​ данные из верхней​​ языке) .​​Вот пример, в котором​​ Это также идеально​1 столбец в​​ листу​​ четко перечисленных листов​ ячейки и до​ lCol As Long​​ такое дело, то​​On Error Resume​ в редактор Visual​Фактически — это суммирование​ диапазона и введите​ чтобы упростить выбор​ и диаграмм на​ появлению в консолидированных​ строки или левого​Если данные, которые требуется​ выбраны три диапазоны​ время Настройка шаблона​ 1 столбец​

    4. ​If wsSh.Name =​​ (Лист1, Лист3, Лист4,​​ конца данных​

  6. ​Dim oAwb As String,​​ оставим до лучших​​ Next​ Basic (​ всех ячеек B3​ в поле​ данных.​ панель быстрого доступа.​​ данных отдельных строк​​ столбца.​

​ проанализировать, представлены на​

support.office.com

Сбор данных с нескольких листов макросом (Макросы/Sub)

​ листа выбранного:​​ с помощью таблиц​2 столбец в​
​ wsDataSheet.Name And bPolyBooks​ Лист5), но это​
​lLastrow = .Cells(1, 1).SpecialCells(xlLastCell).Row​ sCopyAddress As String,​ времен​With Application: .EnableEvents​
​ALT+F11​ на листах с​Второе поле​Нажмите кнопку​ Для этого:​ или столбцов.​
​Путь к файлу вводится​ нескольких листах или​Во всплывающем окне​ Excel.​ 6​ = False Then​

​ не критично. Самое​​iLastColumn = .Cells.SpecialCells(xlLastCell).Column​ sSheetName As String​
​vikiviki​
​ = 0: .ScreenUpdating​), добавляем новый пустой​
​ 2001 по 2003,​одинаковое имя, например​
​Далее​Щелкните стрелку рядом с​
​Консолидация данных представляет собой​ в поле​
​ в нескольких книгах,​
​Консолидация​Консолидация данных по положению​
​3 столбец в​ GoTo NEXT_​ главное - нужно​
​sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column),​
​Dim lLastrow As Long,​: Не надо оставлять​
​ = 0​ модуль (в меню​
​ т.е. количество листов,​ "Пг1" и "Пг2".​
​.​
​ панелью инструментов и​
​ удобный способ объединения​
​Все ссылки​

​ их можно объединить​​нажмите кнопку​ или категории двумя​ 5​With wsSh​ чтобы данные переносились​ .Cells(lLastrow, iLastColumn)).Address​ lLastRowMyBook As Long,​ до лучших времен.​​With ActiveSheet.UsedRange​​Insert — Module​ по сути, может​

​ Выберите первый диапазон​​На странице​
​ выберите​
​ данных из нескольких​

​.​
​ на одном листе​
​Добавить​ способами.​

​5 столбец (потом​​Select Case iBeginRange.Count​

​ в уже созданный​​Case Else ‘собираем данные​
​ li As Long,​ Пожалуйста, напишите. Иначе​
​Intersect(.Cells, .Offset(1)).Delete xlUp​) и копируем туда​

​ быть любым. Также​​ и введите имя​​Шаг 3​​Дополнительные команды​ источников в одном​
​После добавления данных из​
​ с помощью команды​. Повторите этот сценарий,​

excelworld.ru

Консолидация (объединение) данных из нескольких таблиц в одну

Способ 1. С помощью формул 

​Консолидация данных по расположению​ будет заполнен) во​Case 1 ‘собираем​ лист (не удаляя​

Как собрать данные с нескольких листовȎxcel на один лист

​ с фиксированного диапазона​ iLastColumn As Integer​ все придется вручную​End With​ текст вот такого​

​ в будущем возможно​ «Пг1», выберите второй​укажите, следует ли​.​ отчете. Например, если​

​ всех исходных листов​

​ «Консолидация». Например, если​ чтобы добавить все​: данные в исходных​ второй столбец.​ данные начиная с​ строки). Также желательно,​sCopyAddress = iBeginRange.Address​

​Dim wsSh As Object,​ сводить(​With ListBox1​ макроса:​ поместить между стартовым​

​ диапазон и введите​

​ добавлять сводную таблицу​В списке​ в каждом из​ и книг нажмите​ есть отдельный лист​ нужные диапазоны консолидации.​ областях том же​Если это реально,​ указанной ячейки и​ чтобы можно было​End Select​ wsDataSheet As Object,​Z, что значит​For i =​

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

​Sub CombineWorkbooks() Dim​ и финальным листами​ имя «Пг1», выберите​ на новый или​Выбрать команды из​ региональных филиалов вашей​ кнопку​ расходов для каждого​Обновления автоматически и вручную:​ порядке и использует​ то буду очень​ до конца данных​ задавать столбцы (тоже​

​lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row +​ bPolyBooks As Boolean,​ «заказывайте»?​​ 0 To .ListCount​​ FilesToOpen Dim x​​ дополнительные листы с​​ третий диапазон и​​ же на существующий​​выберите пункт​​ компании есть сводная​

Как собрать данные с нескольких листовȎxcel на один лист

​ОК​ регионального представительства, с​Если требуется автоматическое​ одинаковых наклеек. Этот​ благодарен реализации данного​lLastrow = .Cells(1,​ не критично).​ 1​ avFiles​Z​ — 1​ As Integer Application.ScreenUpdating​ данными, которые также​ введите имя «Пг2»,​ лист, и нажмите​Все команды​ таблица расходов, с​.​ помощью консолидации можно​ обновление консолидации таблицы​

​ метод используется для​ проекта!​

  1. ​ 1).SpecialCells(xlLastCell).Row​
  2. ​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​If bPasteValues Then ‘если​
  3. ​Dim wbAct As Workbook​: off​If .Selected(i) Then​ = False ‘отключаем​​ станут автоматически учитываться​ ​ выберите четвертый диапазон​​ кнопку​
    Как собрать данные с нескольких листовȎxcel на один лист
  4. ​.​​ помощью консолидации данных​ ​Примечание:​​ создать на базе​ при изменении исходных​ консолидации данных из​Заранее спасибо, дорогие​iLastColumn = .Cells.SpecialCells(xlLastCell).Column​​Sub Consolidated_Range_of_Books_and_Sheets()​ ​ вставляем только значения​​Dim bPasteValues As Boolean​У многих планетян-знатоков​With ThisWorkbook.Sheets(.List(i)).UsedRange​ обновление экрана для​
  5. ​ при суммировании.​ и введите имя​Готово​Выберите в списке пункт​ можно объединить такие​ Любые названия, не совпадающие​
    Как собрать данные с нескольких листовȎxcel на один лист

​ этих данных корпоративный​ данных, просто установите​ нескольких листов, например​ форумчане!​sCopyAddress = .Range(.Cells(iBeginRange.Row,​Dim iBeginRange As​.Range(sCopyAddress).Copy​On Error Resume Next​ в подписях есть​Intersect(.Cells, .Offset(1)).Copy _​ скорости ‘вызываем диалог​Если исходные таблицы не​​ «Пг2».​​.​​Мастер сводных таблиц и​​ значения в корпоративный​ с названиями в​ ​ лист расходов. Такой​ флажок​​ отделов бюджета листов,​nilem​ iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address​ Object, lCalc As​wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues​

​’Выбираем диапазон выборки с​​ адреса и «кошельки»​​[A1].Offset(Cells(Rows.Count, 1).End(xlUp).Row)​ выбора файлов для​

Как собрать данные с нескольких листовȎxcel на один лист

​ абсолютно идентичны, т.е.​Нажмите кнопку​Вы можете создать несколько​ диаграмм​ отчет о расходах.​ других исходных областях,​ лист может содержать​создавать связи с исходными​ которые были созданы​: пробуйте​Case Else ‘собираем​ Long, lCol As​Else​ книг​ — они не​

Как собрать данные с нескольких листовȎxcel на один лист

planetaexcel.ru

Сборка листов из разных книг в одну

​End With​ импорта FilesToOpen =​ имеют разное количество​Далее​ полей страницы и​и нажмите кнопку​ Такой отчет может​ могут привести к​

​ итоговые и средние​ данными​ из одного шаблона.​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ertert()​ данные с фиксированного​​ Long​​.Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol)​Set iBeginRange = Application.InputBox(«Выберите​​ только принимают благодарности,​​End If​ Application.GetOpenFilename _ (FileFilter:=»All​ строк, столбцов или​

​.​ назначить имена элементов​Добавить​ содержать итоговые и​ появлению в консолидированных​ данные по продажам,​. Если это поле​Консолидация по категории​Dim lr&​ диапазона​Dim oAwb As​End If​ диапазон сбора данных.»​ но и могут​Next​ files (*.*), *.*»,​ повторяющиеся данные или​На странице​ каждому из исходных​, а затем — кнопку​

​ средние данные по​ данных отдельных строк​ текущим уровням запасов​ остается неограниченный, возможность​​: данные в исходных​With Sheets(«ОСВрубли7777»).Range(«A1»).CurrentRegion​sCopyAddress = iBeginRange.Address​​ String, sCopyAddress As​​Application.DisplayAlerts = False​​ & vbCrLf &​ сработать на заказ.​End With​ _ MultiSelect:=True, Title:=»Files​ находятся в разных​Шаг 3​ диапазонов. Это позволяет​ОК​

planetaexcel.ru

Как собрать данные с нескольких листов макросом (кнопкой) (Формулы/Formulas)

​ продажам, текущим уровням​​ или столбцов.​ и наиболее популярным​ обновления консолидации вручную.​ областях не расположены​Union(.Columns(1), .Columns(3).Resize(, 4),​End Select​ String, sSheetName As​End With​ _​ Объявите задачу и​.EnableEvents = 1:​ to Merge») If​ файлах, то суммирование​укажите, следует ли​ выполнять частичную или​.​ запасов и наиболее​Для консолидации по расположению​ продуктам в рамках​Примечания:​ в одном и​ .Columns(8)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2,​lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row​ String​End If​»1. При выборе только​ свои свои контакты​ .ScreenUpdating = 1:​ TypeName(FilesToOpen) = «Boolean»​ при помощи обычных​ добавлять сводную таблицу​ полную консолидацию. Например,​

​В книге щелкните пустую​​ популярным продуктам в​
​ диапазон данных на​
​ всей организации.​ ​ том же порядке,​
​ 1)​ + 1​Dim lLastrow As​
​NEXT_:​ одной ячейки данные​
​ - откликнуться. Кроме​ End With​ Then MsgBox "Не​
​ формул придется делать​

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

​ каждом из исходных​​Тип консолидации следует выбирать​Связи невозможно создать, если​ но имеют одинаковые​End With​’вставляем имя книги,​ Long, lLastRowMyBook As​Next wsSh​ будут собраны со​ того:​Unload Me​ выбрано ни одного​ для каждой ячейки​ же на существующий​

​ страницы могут консолидироваться​​ является частью сводной​
​Для подведения итогов и​ листов должен иметь​ с учетом того,​ исходная и конечная​
​ метки. Используйте этот​
​lr = Sheets("Лист5").Cells(Rows.Count,​ с которой собраны​ Long, li As​
​If bPolyBooks Then wbAct.Close​ всех листов начиная​- Фриланс -​
​End Sub​ файла!" Exit Sub​ персонально, что ужасно​
​ лист, и нажмите​ данных отдела маркетинга​
​ таблицы.​ обобщения результатов по​ формат списка без​
​ как выглядят объединяемые​ области находятся на​ способ, чтобы консолидировать​ 1).End(xlUp)(2, 1).Row​
​ данные​

​ Long, iLastColumn As​​ False​ с этой ячейки.​
​- Фриланс -​
​Private Sub UserForm_Initialize()​
​ End If 'проходим​ трудоемко. Лучше воспользоваться​
​ кнопку​ и отдела продаж​Щелкните значок мастера на​
​ данным в отдельных​
​ пустых строк и​
​ листы. Если данные​
​ одном листе.​
​ данные из нескольких​With Sheets("Банк2рубли").Range("A1").CurrentRegion​If lCol Then​
​ Integer​
​Next li​
​ " & _​
​- ... ;)​
​Dim SH As​
​ по всем выбранным​
​ принципиально другим инструментом.​
​Готово​
​ без данных производственного​ панели быстрого доступа.​ диапазонах можно консолидировать​
​ столбцов.​
​ на листах расположены​
​Если необходимо изменить степень​
​ листов с разными​.Columns(1).Copy Sheets("Лист5").Cells(lr, 1)​
​ wsDataSheet.Cells(lLastRowMyBook, 1).Resize(Range(sCopyAddress).Rows.Count).Value =​Dim wsSh As​
​With Application​vbCrLf & "2. При​ -57744-​
​ Worksheet​
​ файлам x =​

​Рассмотрим следующий пример. Имеем​​.​ отдела, а в​На странице​

​ их в сводной​​Откройте каждый из исходных​ единообразно (названия строк​ диапазона — или​ макетами, но одинаковыми​.Columns(2).Copy Sheets(«Лист5»).Cells(lr, 6)​ oAwb​
​ Object, wsDataSheet As​

​.ScreenUpdating = True: .EnableEvents​​ выделении нескольких ячеек​​vitalisechko​

excelworld.ru

Собрать данные с разных листов книги в итоговую таблицу

​For Each SH​​ 1 While x​ три разных файла​К началу страницы​ другом поле —​Шаг 1​ таблице на главном​ листов и убедитесь​ и столбцов могут​ замените диапазон —​ метками данных.​.Columns(3).Copy Sheets(«Лист5»).Cells(lr, 5)​.Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(,​ Object, bPolyBooks As​ = True: .Calculation​

​ данные будут собраны​
​: Спасибо Вам! Мой​ In ThisWorkbook.Sheets​После этого можно вернуться​ (​werty456​
​ данные всех трех​мастера выберите параметр​ листе. Диапазоны могут​ в том, что​ при этом различаться),​ выберите диапазон, во​Консолидация данных по категории​.Columns(5).Copy Sheets(«Лист5»).Cells(lr, 2)​ lCol)​
​ Boolean, avFiles​ = lCalc​ только с указанного​ пример упрощен. Макрос​If Not SH​ в Excel и​Иван.xlsx​

​: Доброго времени суток,​

​ отделов. Чтобы создать​в нескольких диапазонах консолидации​ находиться в той​ данные на них​ воспользуйтесь консолидацией по​ всплывающем окне Консолидация​ похоже на создание​End With​

​End With​On Error Resume​End With​ диапазона всех листов.»,​

​ я могу сама​

​ Is ActiveSheet Then​​ запустить созданный макрос​,​
​ уважаемые форумчане!​ консолидацию с использованием​, а затем нажмите​

​ же книге, что​​ расположены одинаково.​ расположению. Если же​ и обновлять его,​ сводной таблицы. Со​End Sub​End If​ Next​End Sub​ Type:=8)​ переделать под имеющиеся​ Me.ListBox1.AddItem SH.Name​ через меню​Рита.xlsx​Прошу помощи в​

​ нескольких полей страницы,​ кнопку​ и главный лист,​

​На конечном листе щелкните​​ на листах для​
​ выполнив указанные выше​ сводной таблицей тем​jurafenix​NEXT_:​’Выбираем диапазон выборки​Hugo​’для указания диапазона без​ рабочие файлы. Не​Next​Сервис — Макрос -​и​

​ решении задачи:​​ сделайте следующее:​Далее​ или в других​
​ верхнюю левую ячейку​ соответствующих категорий используются​ действия. Создаст новый​ не менее, вы​

​: nilem, c листа​​Next wsSh​ с книг​: Я уже тут​ диалогового окна:​ нужны мне ваши​

​End Sub​ Макросы (Tools -​

​Федор​​Необходимо произвести сбор​
​Добавьте мастер сводных таблиц​.​ книгах. Консолидированные данные​ области, в которой​ одинаковые названия строк​ в ссылке на​ можете легко переупорядочение​ ОСВрублиБФ и ОСВрубли7777​If bPolyBooks Then​Set iBeginRange =​ недавно говорил -​
​’Set iBeginRange = Range(«A1:A10»)​
​ услуги, сама хочу​
​RLGrime​ Macro — Macros)​

​.xlsx​​ данных с «Лист1»,​ и диаграмм на​На странице​ легче обновлять и​ требуется разместить консолидированные​ и столбцов (данные​ диапазон, поэтому вам​ категории. Если вам​

​ данные не копирует​​ Workbooks(oAwb).Close False​
​ Application.InputBox(«Выберите диапазон сбора​ для этого конкретного​
​ ‘диапазон указывается нужный​ научиться работать.​: krosav4ig, Спасибо) очень​или нажав​) с тремя таблицами:​ «Лист2», «Лист3», «Лист4″​ панель быстрого доступа.​Шаг 2а​ обобщать на регулярной​ данные.​

​ при этом могут​​ нужно будет сначала​ нужна более гибкие​:(​Next li​ данных.» & vbCrLf​ случая подходит​’Если диапазон не выбран​Z​ полезно если много​ALT+F8​Хорошо заметно, что таблицы​ на лист «сводная».​ Для этого:​выберите параметр​ основе или по​Примечание:​ быть расположены по-разному),​

​ удалить предыдущий перед​​ Консолидация по категории,​Только берет с​With Application​ & _​copy /b *.csv​ — завершаем процедуру​

​: off​ листов)​. Отобразится диалоговое окно​ не одинаковы -​Данные на «Лист1″,​Щелкните стрелку рядом с​Создать поля страницы​ мере необходимости.​ Убедитесь, что справа и​ используйте консолидацию по​ Консолидация еще раз.​ можно создать сводную​ Банк2рубли данные и​.ScreenUpdating = True:​»1. При выборе​ all.csv​If iBeginRange Is Nothing​»Мой» — чей?​Elena_новичок​ открытия файла, где​ у них различные​
​ «Лист2», «Лист3», «Лист4″​ панелью инструментов и​

​, а затем нажмите​​Итоговый консолидированный отчет сводной​ снизу достаточно свободных​ категории.​ Просто выберите старой​ таблицу .​ мешает их с​ .EnableEvents = True:​
​ только одной ячейки​dnsel​ Then Exit Sub​

​ vikiviki aka Fox(Lisichka:))??​​: sboy, скажите, как​ необходимо указать один​ размеры и смысловая​
​ могут быть записаны​ выберите​ кнопку​

planetaexcel.ru

Сбор данных из нескольких файлов (csv) на один лист

​ таблицы может содержать​​ ячеек для консолидированных​Более новые версии​
​ ссылки и нажмите​Примечание:​ данными из ОСВрубли7777.​ .Calculation = lCalc​
​ данные будут собраны​: Это в командной​’Указываем имя листа​Для того, чтобы​ заменить ссылку на​ или несколько (удерживая​
​ начинка. Тем не​ через строчку через​Дополнительные команды​Далее​ следующие поля в​
​ данных.​​ Office 2011 г.​
​ клавишу Delete.​ В этой статье были​ Видимо данные из​
​End With​

​ со всех листов​ строке? А где​’Допустимо указывать в имени​

​ что-то переделать, это​ номер листа на​ CTRL или SHIFT)​

​ менее их можно​ две, меняться количество​.​.​

​ области​На вкладке​ ​Нажмите кнопку​

​ созданы с Excel​

​ Банк2рубли просто накладываются​

​End Sub​

​ начиная с этой​ путь указывается?​

​ листа символы подставки​ что-то вам кто-то​ название листа? Как​ файлов, листы из​

​ собрать в единый​ строк и столбцов​В списке​На странице​Список полей сводной таблицы​Данные​

​Для консолидации по расположению​ОК​ 2016. Хотя представления​ на данные ОСВрубли7777​KolyvanOFF​ ячейки. » &​

​Hugo​ ? и *.​

​ должен предоставить -​ поменяется команда With​

​ которых надо добавить​ отчет меньше, чем​

​Таблица на листе​Выбрать команды из​

​Шаг 2б​

​, добавляемой в сводную​в разделе​ диапазон данных на​

​, а Excel создаст​ могут отличаться при​nilem​: Так нужно?​

​ _​: Я не вчитывался​’Если указать только *​ то есть услужить,​ Sheets(2): ?​ к текущей книге.​

​ за минуту. Единственным​ «Сводная», куда заносятся​выберите пункт​сделайте следующее:​

​ таблицу: «Строка», «Столбец»​Сервис​ каждом из исходных​

​ консолидации для вас.​

​ использовании другой версии​: Ну если макрос​jurafenix​

​vbCrLf & «2.​ в этот нечитаемый​ то данные будут​

​ оказать услугу, а​Спасибо!​RLGrime​ условием успешного объединения​

​ данные, форматирована,как таблица​Все команды​Перейдите в книгу и​ и «Значение». Кроме​

​нажмите кнопку​ листов должен иметь​ Кроме того можно​ Excel, шаги одинаковы.​

​ что-то там не​: К сожалению, нет.​ При выделении нескольких​

​ код. Принципиально.​ собираться со всех​

​ вы от нее​

​Pelena​

​: Доброго всем времени​

​ (консолидации) таблиц в​

​ с заголовками, и​

​.​ выделите диапазон ячеек,​ того, в отчет​

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

​Мне нужно чтобы​

​ ячеек данные будут​

​Я лишь ответил​ листов​ отказываетесь… Последовательнее, логичнее​

​:​

​ суток. От меня​ подобном случае является​

​ начинается с 9​

​Выберите в списке пункт​ а затем вернитесь​ можно включить до​.​

​ пустых строк и​

​ только необходимо отформатировать​

​ чтобы консолидация нескольких​ и должно быть​

​ столбец А нескольких​

​ собраны только с​

​ на заглавный вопрос​

​sSheetName = InputBox(«Введите имя​

​ надо быть, однако​

​With Sheets(«имя_листа»)​

​ был уже подобный​

​ совпадение заголовков столбцов​ строки​

​Мастер сводных таблиц и​ в мастер сводных​

​ четырех полей фильтра,​Выберите в раскрывающемся списке​ столбцов.​ один раз, если​

​ рабочих листов в​давайте добавим еще​ листов копировался в​ указанного диапазона всех​

​ темы.​ листа, с которого​ … ;) -95573-​vikiviki​

​ вопрос, но сейчас​

​ и строк. Именно​

​Kuzmich​ диаграмм​ таблиц и диаграмм​ которые называются «Страница1»,​

​функцию​

​Откройте каждый из исходных​

​ не перезапустить консолидации.​ главном листе.​

​ три строчки:​ столбец А итогового​

​ листов.», Type:=8)​

​dnsel​

​ собирать данные(если не​vitalisechko​

​: Пожалуйста, подскачите решение.​ задача стоит в​

​ по первой строке​

​: При активном листе​

​и нажмите кнопку​

​ и нажмите кнопку​

​ «Страница2», «Страница3» и​

​, которую требуется использовать​

​ листов и убедитесь​

​Все названия, не совпадающие​

​Если вы еще не​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ertert()​

​ файла и т.д.​’Если диапазон не​

​: Не очень понятно,​

​ указан, то данные​

​: Трактуйте как хотите.​ Нужно подтянуть данные​ следующем. Есть какое-то​

​ и левому столбцу​

​ «Сводная» запустить макрос​

​Добавить​​Добавить​ «Страница4».​ для консолидации данных.​ в том, что​
​ с названиями в​ сделано, настройте данные​

​Dim lr&​​ А у вас​ выбран — завершаем​ что значит copy​

​ собираются со всех​​ Можете умничать сколько​ со всех листов​ кол-во листов в​
​ каждой таблицы Excel​Sub Sbor()​, а затем — кнопку​

​.​​Каждый из диапазонов данных​Выделите на каждом листе​ данные на них​
​ других исходных областях,​ на каждом листе​With Sheets(«ОСВрубли7777»).Range(«A1»).CurrentRegion​ он с одного​ процедуру​
​ /b *.csv all.csv.​ листов)», «Параметр»)​ угодно. Вы мне​ в книге в​

​ книге, например 4.​​ будет искать совпадения​Dim Sht As​ОК​Совет:​ следует преобразовать в​
​ нужные данные и​ расположены одинаково.​ приведут к появлению​ составные, сделав следующее:​
​Union(.Columns(1), .Columns(3).Resize(, 4),​ листа копирует в​If iBeginRange Is​

​У меня есть​​’Если имя листа не​ предлагаете услугу за​ итоговую таблицу. В​ Предположим, что все​

​ и суммировать наши​​ Worksheet​.​
​ Если диапазон ячеек находится​ формат перекрестной таблицы​ нажмите кнопку​На конечном листе щелкните​
​ дополнительных строк или​Убедитесь, что все диапазоны​
​ .Columns(8)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2,​ итоговый, а с​

planetaexcel.ru

Сбор данных с нескольких листов (Макросы/Sub)

​ Nothing Then Exit​​ папка с названием​ указано — данные​
​ деньги. А мне​ книге каждый лист​ листы по конструкции​ данные.​Dim iLastRow As​
​В книге щелкните пустую​ в другой книге,​ с совпадающими именами​Добавить​ верхнюю левую ячейку​ столбцов в консолидированных​ данных представлены в​ 1)​ других листов не​ Sub​ N. Там лежит​ будут собраны со​ нужна подсказка от​ обозначает город, в​ идентичны, но сами​Для того, чтобы выполнить​
​ Long​
​ ячейку, которая не​ сначала откройте ее,​ строк и столбцов​
​.​ области, в которой​ данных.​ формате списка. Каждый​End With​
​ копирует(((​’Указываем имя листа​ куча файликов CSV​
​ вех листов​ людей для которых​ котором работают менеджера​ таблицы могут быть​
​ такую консолидацию:​Dim iLR As​
​ является частью сводной​ чтобы упростить выбор​ для элементов, которые​Путь к файлу вводится​ требуется разместить консолидированные​Убедитесь, что все категории,​ столбец необходимо иметь​With Sheets(«ОСВрублиБФ»).Range(«A1»).CurrentRegion​nilem​’Допустимо указывать в​ с разными названиями.​If sSheetName = «»​ подобная задача не​ по продажам. Один​ различного объема .​Заранее откройте исходные файлы​ Long​ таблицы.​ данных.​ вы хотите объединить.​
​ в поле​
​ данные.​
​ которые не нужно​ метку (верхний колонтитул)​Union(.Columns(1), .Columns(3).Resize(, 4),​:​
​ имени листа символы​Как в команде​ Then sSheetName =​ представляет такой сложности​
​ менеджер может работать​ И Нужно собрать​Создайте новую пустую книгу​iLastRow = Cells(Rows.Count,​На странице​
​В разделе​ В выбранные данные​Все ссылки​Примечание:​
​ консолидировать, должны иметь​ в первой строке​
​ .Columns(8)).Copy Sheets("Лист5").Cells(Rows.Count, 1).End(xlUp)(2,​jurafenix​
​ подставки ? и​ обозначить какая папка​ "*"​ как для меня.​
​ в нескольких городах,​ данные не со​ (Ctrl + N)​ 1).End(xlUp).Row​Шаг 1​Во-первых, укажите количество полей​ не следует включать​
​.​ Убедитесь, что справа и​ уникальные подписи, которые​ и содержать похожие​ 1)​,​
​ *.​ мне нужна для​On Error GoTo 0​
​ Я не просила​ поэтому его имя​ всех листов, а​
​Установите в нее активную​
​Range("A10:K" & iLastRow).Clear​мастера выберите параметр​ страницы сводной таблицы​ итоговые строки и​
​После добавления данных из​ снизу достаточно свободных​ появляются в диапазоне​ данные. Должен быть​
​End With​может как-то так?:​'Если указать только​ выборки?​'Запрос - вставлять на​ о платных услугах​
​ встречается на нескольких​ с определенных, поместить​ ячейку и выберите​For Each Sht​
​в нескольких диапазонах консолидации​введите​ итоговые столбцы. В​
​ всех исходных листов​ ячеек для консолидированных​
​ только один источник.​ отсутствуют пустые строки​lr = Sheets("Лист5").Cells(Rows.Count,​200?'200px':''+(this.scrollHeight+5)+'px');">Sub ertert()​ * то данные​
​Hugo​ результирующий лист все​ и не ожидала​ закладках.​ данные друг под​
​ на вкладке (в​ In Worksheets​, а затем нажмите​
​0​ приведенном ниже примере​ и книг нажмите​
​ данных.​
​Если данные для консолидации​
​ или столбцы в​
​ 1).End(xlUp)(2, 1).Row​
​Dim v​
​ будут собираться со​: Самое быстрое -​ данные​
​ что мне напишут​Задача:​ другом. Нужно это​ меню)​If Sht.Name <>​
​ кнопку​
​, а затем нажмите​
​ показано четыре диапазона​ кнопку​На вкладке​
​ находятся в разных​
​ любом месте в​With Sheets("Банк2рубли").Range("A1").CurrentRegion​For Each v​
​ всех листов​
​ используя ТоталКоммандер встать​'или только значения ячеек​
​ макрос, который я​
​1) На итоговый​ сделать именно макросом,​
​Данные - Консолидация​ "Сводная" And Sht.Name​
​Далее​ кнопку​
​ в формате перекрестной​
​ОК​Данные​
​ ячейках разных листов:​ списке.​
​.Columns(1).Copy Sheets("Лист5").Cells(lr, 1)​ In Array("Лист1", "Лист2",​sSheetName = InputBox("Введите​ в папку и​
​ (без формул и​ подставлю и все​ лист собрать названия​ лучше по нажатию​(Data - Consolidate)​
​ <> "123" Then​.​Далее​ таблицы.​
​.​
​в группе​
​Введите формулу со ссылками​Разместите каждый диапазон на​.Columns(2).Copy Sheets("Лист5").Cells(lr, 6)​ "Лист3", "Лист4")​
​ имя листа, с​ выполнить в коммандной​
​ форматов)​
​ мои проблемы решатся.​ всех городов в​
​ кнопки. Во вложении​. Откроется соответствующее окно:​With Sht​
​На странице​
​.​
​При консолидации данных можно​Для консолидации по категории​
​Работа с данными​ на ячейки других​ отдельном листе, но​
​.Columns(3).Copy Sheets("Лист5").Cells(lr, 5)​With Sheets(v)​ которого собирать данные(если​
​ строке эту команду.​bPasteValues = (MsgBox("Вставлять только​
​Baklanoff​
​ строку Город один​
​ пример таблицы и​
​Установите курсор в строку​
​iLR = .Cells(.Rows.Count,​Шаг 2а​
​На странице​
​ использовать поля страницы,​
​ диапазон данных на​нажмите кнопку​ листов (по одной​
​ не было введено​
​.Columns(5).Copy Sheets("Лист5").Cells(lr, 2)​

​With .Range(«A1», .Cells(Rows.Count,​​ не указан, то​

​Или сохранить эту​​ значения?», vbQuestion +​:(
​: >> А мне​ за другим.​ что в итоге​Ссылка​ 1).End(xlUp).Row​выберите параметр​Шаг 3​ содержащие элементы, которые​ каждом из исходных​Консолидация​ на каждый лист).​

​ никаких данных в​​End With​​ 1).End(xlUp))​​ данные собираются со​
​ строку в bat/cmd,​
​ vbYesNo, "Excel-VBA") =​
​ нужна подсказка от​
​2) На итогом​ должно получиться. Собрать​(Reference)​
​iLastRow = Cells(Rows.Count,​
​Создать поля страницы​укажите, следует ли​
​ представляют один или​ листов должен иметь​.​
​ Например, чтобы консолидировать​
​ основном листе где​
​End Sub​
​Union(.Columns(1), .Offset(, 2).Resize(,​

​ всех листов)», «Параметр»)​​ поместить файл в​
​ vbYes)​ людей для которых​

​ листе в колонке​​ таблицы нужно с​и, переключившись в​ 1).End(xlUp).Row + 1​, а затем нажмите​ добавлять сводную таблицу​

​ несколько исходных диапазонов.​​ формат списка без​Выберите в раскрывающемся списке​ данные из листов​hands​ план для консолидации​если так тоже​
​ 2)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2,​’Если имя листа​ папку и выполнить.​’Запрос сбора данных с​ подобная задача не​
​ Имя вывести список​ листов 2 и​
​ файл Иван.xlsx, выделите​.Range(.Cells(2, «A»), .Cells(iLR,​
​ кнопку​
​ на новый или​
​ Например, при консолидации​
​ пустых строк и​функцию​ «Продажи» (в ячейке​
​ данных. Excel будет​ не захочет работать,​
​ 1)​ не указано -​
​Но можно конечно​ книг(если Нет -​
​ представляет такой сложности​ уникальных значений со​
​ 3, а 1​
​ таблицу с данными​ «K»)).Copy Cells(iLastRow, 1)​Далее​

​ же на существующий​​ данных бюджета отдела​ столбцов. Кроме того,​, которую требуется использовать​
​ B4), «Кадры» (в​
​ сделать это для​ то нужен пример​End With​ данные будут собраны​ прописать путь и​
​ то сбор идет​ как для меня​
​ всех листов(вроде и​ и 4 не​
​ (вместе с шапкой).​
​End With​
​.​
​ лист, и нажмите​
​ маркетинга, отдела продаж​ категории должны быть​ для консолидации данных.​
​ ячейке F5) и​ вас.​
​ вашего файла​End With​
​ со вех листов​ прямо в код.​
​ с активной книги)​Подсказать — это​ простая задача, но​
​ трогать. Помогите решить​ Затем нажмите кнопку​End If​На странице​
​ кнопку​ и производственного отдела​

​ названы одинаково. Например,​​Выделите на каждом листе​
​ "Маркетинг" (в ячейке​
​Убедитесь, что всех диапазонов​
​jurafenix​
​Next​If sSheetName =​dnsel​
​If MsgBox("Собрать данные с​
​ пожалуйста. Здесь все​ не могу сообразить​
​ данную задачу пжлст)​
​Добавить​
​Next​
​Шаг 2б​
​Готово​
​ поле страницы может​
​ если один из​

​ нужные данные.​​ B9) в ячейке​ совпадают.​: nilem, Спасибо огромное!!!​:(​End Sub​:(​ «» Then sSheetName​: Огонь) Спасибо большое.​ нескольких книг?», vbInformation​ делается одним циклом​ как с ней​ Спасибо.​(Add)​

​End Sub​​сделайте следующее:​.​ содержать отдельный элемент​ столбцов называется​:)
​Путь к файлу вводится​ A2 основного листа,​
​На основном листе щелкните​
​ Спасли меня! Всё​
​Manyasha​
​ = "*"​ Жаль, только, что​ + vbYesNo, "Excel-VBA.ru")​
​ по страницам книги​
​ справиться)​
​sboy​в окне консолидации,​werty456​
​Перейдите в книгу и​
​Чтобы включить одно поле​ с данными по​
​Сред.​
​ в поле​
​ введите следующее:​
​ левый верхний угол​
​ отлично работает​
​: Посмотрите эту тему​
​On Error GoTo​

​ excel ограничивает мой​ = vbYes Then​ (исключая страницу «ИТОГО»)​3) Подтянуть Количество​

​: Добрый день.​​ чтобы добавить выделенный​: Собрал данные макросом.​ выделите диапазон ячеек,​hands hands hands hands

excelworld.ru

​ страницы, содержащее элемент​

Excel macro that allows you to select multiple workbooks and have all of their worksheets automatically combined into a single workbook. 

This macro will add the worksheets to a newly created workbook and not to the currently open/visible workbook. This allows you to do whatever you want with the new workbook without having to worry about the contents of the current workbook.

This macro allows you to select as many files as you want to combine and you do it all through the regular «Select File» dialogue box, which makes it really easy to use.

You do not have to change anything for this macro to work, just run it.

Where to Install the Macro: Module

Sub Combine_Workbooks_Select_Files_1()

    Dim Fnum As Long
    Dim mybook As Workbook
    Dim BaseWb As Workbook
    Dim CalcMode As Long
    Dim FName As Variant
    Dim wSheet As Worksheet


    With Application
        CalcMode = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
    End With

    'Get the files to combine
    FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xl*), *.xl*", MultiSelect:=True)

    If IsArray(FName) Then

        'Create the workbook to store the combined files
        Set BaseWb = Workbooks.Add(xlWBATWorksheet)

        'Loop through the files to combine
        For Fnum = LBound(FName) To UBound(FName)
            Set mybook = Nothing
            On Error Resume Next
            Set mybook = Workbooks.Open(FName(Fnum))
            On Error GoTo 0
            If Not mybook Is Nothing Then
                On Error Resume Next

                'Add the worksheets to the new workbook
                For Each wSheet In mybook.Worksheets

                    wSheet.Move Before:=BaseWb.Sheets(1)

                Next wSheet

                mybook.Close savechanges:=False

                On Error GoTo 0

            End If

        Next Fnum

        'Delete a default worksheet that was added to the new workbook.
        BaseWb.Sheets(BaseWb.Sheets.Count).Delete

    End If

ExitTheSub:

    'Reset the options for display, alerts, and calculations.
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = CalcMode
        .DisplayAlerts = True
    End With

End Sub


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Combine Multiple Workbooks into One

Macro: This macro for Microsoft Excel allows you to combine multiple workbooks and worksheets int…

Combine Values from Multiple Cells into One Cell in Excel

Tutorial: There are two easy ways to combine values from multiple cells in Excel.
In order to do thi…

Guide to Combine and Consolidate Data in Excel

Tutorial: Guide to combining and consolidating data in Excel. This includes consolidating data from …

Combine Data from Multiple Worksheets in Excel

Tutorial:
The easiest way to combine and consolidate data in Excel.

Simple method to combine data …

Vlookup Across Multiple Workbooks

Tutorial: How to use the VLOOKUP function across multiple workbooks in Excel. This will create a lin…

Import a Worksheet from One Workbook to Another in Excel

Tutorial: In Excel, you can quickly copy an entire worksheet from one workbook to another workbook.�…

How to Install the Macro

  1. Select and copy the text from within the grey box above.
  2. Open the Microsoft Excel file in which you would like the Macro to function.
  3. Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
     Or For other ways to get there, Click Here.
  4. On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
  5. If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
  6. If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
  7. If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
  8. Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
  9. You are now ready to run the macro.

Понравилась статья? Поделить с друзьями:
  • Как все листы в excel перенести в один pdf
  • Как вписать рисунок в таблицу word
  • Как все копировать в word
  • Как вписать название диаграммы в excel
  • Как все книги excel delphi 7