Макрос объединения всех листов excel на один лист

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 вся необходимая информация собирается на одном…

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

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

Открываем книгу, куда хотим собрать листы из других файлов, входим в редактор Visual Basic сочетанием клавиш Alt+F11 одноименной кнопкой на вкладке Разработчик (Developer — Visual Basic), добавляем новый пустой модуль (в меню Insert — Module) и копируем туда текст вот такого макроса:

 
Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer

    Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
    
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
    
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend

    Application.ScreenUpdating = True
End Sub

После этого можно вернуться в Excel и запустить созданный макрос на вкладке Разработчик кнопкой Макросы (Developer — Macros) или нажав Alt+F8. Отобразится диалоговое окно открытия файла, где необходимо указать один или несколько (удерживая Ctrl или Shift) файлов, листы из которых надо добавить к текущей книге — и задача решена!

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

  • Что такое макросы, куда вставлять код макроса на Visual Basic
  • Автоматическая сборка заданных листов из заданных книг с помощью надстройки PLEX
  • Автоматическая сборка данных с нескольких листов на один итоговый лист с помощью надстройки PLEX

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. В этом уроке я дам несколько советов по быстрому решению этой задачи.

док комбинировать 1

БЫСТРАЯ НАВИГАЦИЯ

Объединение всех листов активной книги в один лист с помощью VBA
Объединение десятков листов или книг в один лист / книгу с помощью щелчков мышью
Объединение двух таблиц в одну и обновление по столбцу кликами
Скачать образец файла


Объединение всех листов активной книги в один лист с помощью VBA

В этом разделе я предоставляю код VBA, который создаст новый лист для сбора всех листов активной книги, пока вы ее запускаете.

1. Активируйте книгу, все листы которой вы хотите объединить, затем нажмите + ключи для открытия Microsoft Visual Basic для приложений окно.

2. Во всплывающем окне нажмите Вставить > Модули для создания нового скрипта модуля.

3. Скопируйте приведенный ниже код и вставьте его в скрипт.

Sub Combine()
'UpdatebyExtendoffice
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
док комбинировать 2

4. Нажмите F5 key, то все данные на листах были объединены в новый лист с именем Combined, который помещается перед всеми листами.


не двигаться

Вы хотите повысить зарплату и много времени проводить с семьей?

Вкладка Office повышает эффективность работы Microsoft Office на 50% прямо сейчас

Невероятно, но работать с двумя или более документами проще и быстрее, чем над одним.

По сравнению с известными браузерами инструмент с вкладками в Office Tab более мощный и эффективный.

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

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

30— дневная бесплатная пробная версия, кредитная карта не требуется.

Узнать большеСкачать сейчас


Объединение десятков листов или книг в один лист / книгу с помощью щелчков мышью

С помощью VBA вы можете объединять листы только в активной книге, но как вы можете объединить листы из книг в лист или книгу?

Объединение листов из книг в один лист
док комбинировать 18

Объединение листов из книг в одну книгу
док комбинировать 3

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

  • Объедините несколько листов или книг на один лист
  • Объедините несколько листов или книг в одну книгу
  • Объединить листы с одинаковыми именами в один лист
  • Объединяйте значения на листах или в книгах на один лист

Здесь в качестве примера рассматривается второй вариант:

Объедините несколько листов или книг в одну книгу

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Активируйте Excel, щелкните Кутулс Плюс > Сочетать, появится диалоговое окно, напоминающее вам, что книги, которые вы хотите объединить, необходимо закрыть. Нажмите OK для продолжения.
док комбинировать 4
док комбинировать 5

2. в Объедините рабочие листы, шаг 1 диалог, проверьте Объедините несколько листов из книг в одну книгу вариант. Нажмите Download для перехода к следующему шагу мастера.
док комбинировать 6

3. Нажмите Добавить > Файл or Папка чтобы добавить книги, которые вы хотите объединить, в Список рабочих книг панели, затем вы можете указать, какой лист будет объединен, проверив имена в Список рабочих листов панель. Нажмите Download перейти к последнему шагу мастера.
док комбинировать 7

4. На этом шаге укажите нужные вам настройки. Затем нажмите Завершить.
док комбинировать 8

5. Появится окно, в котором вы выберете папку для размещения объединенной книги, затем нажмите Сохраните.
док комбинировать 9

Теперь книги объединены в одну книгу. И в начале всех листов мастер-лист с именем Kutools for Excel также создается, в котором перечислены некоторые сведения о листах и ​​ссылки для каждого листа.
док комбинировать 10

Демонстрация: объединение листов / книг в один лист или книгу

Kutools for Excel:200 + полезных удобных инструментов, упрощающих сложные задачи в Excel в несколько кликов.

Попрощайтесь с мышиной рукой и шейным спондилезом

300 продвинутых инструментов Kutools for Excel решить 80% Задачи Excel за считанные секунды, избавят вас от тысяч щелчков мышью.

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

Ежедневно повышайте производительность на 80% для более чем 110000 высокоэффективных людей, включая вас.

Больше не мучиться мучительными формулами и VBA, дайте своему мозгу отдых и радостное рабочее настроение.

30— дневная бесплатная пробная версия со всеми функциями, 30день назад деньги без причины.

Лучшее тело создает лучшую жизнь.


Объединение двух таблиц в одну и обновление по столбцу кликами

Если вы хотите объединить две таблицы в одну и обновить данные на основе столбца, как показано на скриншоте ниже, вы можете попробовать Слияние таблиц полезности Kutools for Excel.
док комбинировать 11

Kutools for Excel: более 200 удобных надстроек Excel для упрощения сложных задач в несколько кликов в Excel

После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

1. Нажмите Кутулс Плюс > Слияние таблиц включить Слияние таблиц Мастер.
док комбинировать 12

2. На шаге 1 мастера вам необходимо отдельно выбрать диапазоны основной таблицы и таблицы поиска. Затем нажмите Download.
док комбинировать 13

3. Отметьте ключевой столбец, на основе которого вы хотите обновить данные в основной таблице. Нажмите Download.
док комбинировать 14

4. Затем отметьте столбцы в основной таблице, в которых вы хотите обновить данные на основе таблицы поиска. Нажмите Download.
док комбинировать 15

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

6. На последнем этапе мастера укажите необходимые параметры настройки. Затем нажмите Завершить.
док комбинировать 17

Теперь в основной таблице были обновлены данные и добавлены новые данные на основе таблицы поиска.

Демонстрация: объединение листов / книг в один лист или книгу

Kutools for Excel:200 + полезных удобных инструментов, упрощающих сложные задачи в Excel в несколько кликов.


Скачать образец файла

образец


Рекомендуемые инструменты для повышения производительности

Вкладка Office — просмотр, редактирование и управление документами с вкладками в Microsoft Office 2019 — 2003 и Office 365

вкладка office

Профессиональная надстройка для ускорения работы Excel 2019-2007, сокращающая часы работы до секунд

Эта надстройка включает в себя десятки профессиональных групп, с более чем 300 опциями, которые автоматизируют большинство ваших повседневных задач в Excel и увеличивают вашу продуктивность как минимум на 50%. Например, группы опционов в один клик и пакетные преобразования.
Теперь у вас есть шанс ускорить себя с помощью Kutools for Excel!

вкладка kutools

вкладка kutoolsp

anytka

0 / 0 / 0

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

Сообщений: 27

1

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

11.02.2013, 18:24. Показов 41061. Ответов 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

Имеется книга из 50 листов.
Везде списки. Названия полей везде одинаковые. В левом сотлбце уникальный ключ-идентификатор.
Есть ли возможность скопировать все эти данные в одну базу?
Пробовала консолидацию, но мы с ней не дружим :(
Выделять и копировать диапазоны — не вариант, т.к. листов очень много.
Данные все текстовые


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Пойдет :)
Но интересно бы еще найти штатный вариант.
Если кто знает — расскажите :)


Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


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


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


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

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


Спасибо, попробую разобраться :)


И совсем простенький (в новую книгу)

Sub sborka()
s_ = Sheets.Count
Workbooks.Add
ThisWorkbook.Sheets(1).Range("1:1").Copy ActiveWorkbook.Sheets(1).Range("a1")
For i = 1 To s_
    r_ = ActiveWorkbook.Sheets(1).Range("a" & Rows.Count).End(xlUp).Row + 1
    ThisWorkbook.Sheets(i).Range("a1").CurrentRegion.Offset(1).Copy ActiveWorkbook.Sheets(1).Range("a" & r_)
Next
End Sub

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


Огромное спасибо _Boroda_  :)


А есть ли какое-то средство для самого обычного копирования листов одной книги на новый лист сверху вниз? Не нужна абсолютно никакая консолидация цифр, их нет, заголовки можно считать обычными ячейками и никак не учитывать.
Количество колонок на листах разное, нужно скопировать всё.
Заранее спасибо!


Цитата: Selma от 30.12.2010, 11:04
А есть ли какое-то средство для самого обычного копирования листов одной книги на новый лист сверху вниз?

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

Всякое решение плодит новые проблемы…


Макрос может быть, например, таким:

Sub tt()
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
    Sheets(i).Range("A1", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
    n_ = n_ + r_
Next
End Sub

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


задача похожа, но немного все же иная. интересует макрос который бы автоматически копировал (добавлял) строки из разных листов по мере их заполнения на главный (или сводный лист), т.е. при заполнении какой-либо строки на каком-либо листе данные по порядочку добавлялись на сводный лист. это возможно? :-[


Sub tt()
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
    Sheets(i).Range("A1", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
    n_ = n_ + r_
Next
End Sub

то что надо!

только надо применить для тех книг в названиях которых есть символ «$»

Также желательно 3 пустые строки между данними книг.


‘макрос объединения нескольких листов в один

Sub UnionPages()
For L = 2 To Sheets.Count
Sheets(L).Range("A1:Z" & Sheets(L).UsedRange.Rows.Count + 1).Copy Sheets(1).Range("A" & Sheets(1).UsedRange.Rows.Count)
Next
End Sub

Источник: http://hammga.ru/blogs?id=43


Содержание

  1. Сборка данных со всех листов книги в одну таблицу
  2. Постановка задачи
  3. Способ 1. Сборка данных с листов с помощью Power Query
  4. Шаг 1. Подключаемся к файлу
  5. Шаг 2. Отбираем нужные листы
  6. Шаг 3. Разворачиваем таблицы
  7. Способ 2. Сборка данных с листов макросом на VBA
  8. Способ 3. Готовый макрос из надстройки PLEX
  9. Ссылки по теме

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

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

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

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

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

Наша задача — собрать все данные со всех листов в одну таблицу, чтобы потом с ней работать (фильтровать, сортировать, построить сводную и т.д.) Сделать это можно разными способами, но самыми удобными будут, пожалуй, 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] — имя столбца, где в каждой ячейке лежат таблицы с содержимым каждого листа (убийственная формулировка для рядового пользователя Excel, да, я знаю)
  • [Column1] — имя столбца на листе, из которого мы хотим извлечь данные
  • — номер строки (считая с нуля), откуда мы хотим взять данные

После фильтрации «мусора» все добавленные вспомогательные столбцы можно, конечно же, спокойно удалить, оставив только колонки 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 и скопируйте туда текст вот такого макроса:

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

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

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

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

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

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

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

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

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

Николай, подскажите, пожалуйста, как бороться с ошибкой возникающей при переименовании первого листа (либо ставкой листа в начало книги).
Ошибка возникает при выполнении строчки:
#»Переименованные столбцы» = Table.RenameColumns(#»Измененный тип»,<<«Абакан», «Город»>>),

Такая ошибка возникает, в том числе, при работе с файлами из папки.

P.S.
Когда мы увидим Вашу книгу по PQ? Очень ждём!

Степан, «Абакан» оказался в заголовке после первого шага в «наведении блеска» — повышения заголовков. На экранной форме Николая видно, что «Абакан» находится на одной строке с другими заголовками. Следующий шаг как раз и приводит к ошибке в случае, если появился новый лист в начале книги.

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

Здраствуте.
Подскажите как с помощью Power Query загрузить (сделать подключение ) к листу на этой же книге ?
Если я делаю «Получить данные- Из файла- Из книги Excel, то я посылаюсь на эту же книгу, но пишет ее адрес (как при внешнем источнике) : C:UsersokurinnaDesktopFlash report (short version) v3.xlsx а не лист Actual

Ниже приведено 2 запроса, которые я потом объеденяю в один целый:

Запрос 1:
let
Источник = Excel.Workbook(File.Contents(«C:UsersokurinnaDesktopFlash report (short version) v3.xlsx» ), null, true),
Actual_Sheet = Источник<[Item=»Actual»,Kind=»Sheet»]>[Data],
#»Удаленные верхние строки» = Table.Skip(Actual_Sheet,4),
#»Удаленные столбцы» = Table.RemoveColumns(#»Удаленные верхние строки»,<«Column17», «Column18», «Column19»>),
#»Повышенные заголовки» = Table.PromoteHeaders(#»Удаленные столбцы», [PromoteAllScalars=true ] )
in
#»Повышенные заголовки»

let
Источник = Excel.Workbook(File.Contents(«C:UsersokurinnaDesktopFlash report (short version) v3.xlsx» ) , null, true),
Actual_Sheet = Источник<[Item=»Actual»,Kind=»Sheet»]>[Data],
#»Удаленные верхние строки» = Table.Skip(Actual_Sheet,4),
#»Повышенные заголовки» = Table.PromoteHeaders(#»Удаленные верхние строки», [PromoteAllScalars=true ] ),
#»Удаленные столбцы» = Table.RemoveColumns(#»Повышенные заголовки»,<«Sum in USD», «Sum in USD with adjustments», «Reported month»>),
#»Переименованные столбцы» = Table.RenameColumns(#»Удаленные столбцы»,<<«Adjustments in reported period», «Reported month»>>),
#»Переупорядоченные столбцы» = Table.ReorderColumns(#»Переименованные столбцы»,<«Plan/Fact», «Reported month», «Project», «SOW ID «, «Cost/Revenue», «Category», «Article», «Date of operation», «raw data», «Working hours», «Surname Name», «Description», «Original sum», «Original currency», «EUR/USD», «Sum of adjustments in previous period»>),
#»Переименованные столбцы1″ = Table.RenameColumns(#»Переупорядоченные столбцы»,<<«Sum of adjustments in previous period», «Sum in USD»>>),
#»Строки с примененным фильтром» = Table.SelectRows(#»Переименованные столбцы1″, each ([Sum in USD] <> null)),
#»Удаленные столбцы1″ = Table.RemoveColumns(#»Строки с примененным фильтром»,<«Article»>),
#»Добавлен пользовательский объект» = Table.AddColumn(#»Удаленные столбцы1″, «Article», each Text.From([#»Cost/Revenue»]&» adjustments» ] ),
#»Переупорядоченные столбцы1″ = Table.ReorderColumns(#»Добавлен пользовательский объект»,<«Plan/Fact», «Reported month», «Project», «SOW ID «, «Cost/Revenue», «Category», «Article», «Date of operation», «raw data», «Working hours», «Surname Name», «Description», «Original sum», «Original currency», «EUR/USD», «Sum in USD»>),
#»Измененный тип» = Table.TransformColumnTypes(#»Переупорядоченные столбцы1″,<<«Reported month», type date>>)
in
#»Измененный тип»

У меня несколько таблиц на одной и той же книге, но они в разном формате. Мне нужно в Power Query потом писать разные запросы чтобы их потом привести к общей форме и соединить.
Мне крайне важно сделать этот файл автономным и не зависищем от внешних источников.
Как посоветуете ?

Источник

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

​Смотрите также​​ в профиле.​ на дилетантском уровне,​Сергей раковец — 1с​ Destination:=Sheets(1).Range(«A1») For J​ FLEX выбрать объединить​ — цикл по​ таблицы + иногда​ справочники, самоучители​ As Long For​chumich​ To 1099 If​ Set firstBook =​нажмите кнопку​ области, в которой​ данные.​ диапазон данных на​Примечание:​lavAzza​ так что прошу​ франчайзинг​ = 2 To​

​ данные на разных​ всем листам, определяем​ встречаются показатели, которых​Предположим, имеется куча книг​ i = 2​: Вы немного переоценили​ thirdBook.Sheets(1).Cells(i1, 1) =​ Workbooks.Open(«D:\file1.xlsx») Set thirdBook​Консолидация​ требуется разместить консолидированные​Примечание:​ каждом из исходных​Мы стараемся как​: Помогите, пожалуйста, решить​ отвечать максимально развернуто.​: вуву​ Sheets.Count Sheets(J).Activate Range(«A1»).Select​ листах в одном​ что копировать, определем​ нет в остальных​ Excel, все листы​ To 200000 j​

​ возможности быстродействия компьютера.​ mass(k1, 1) Then​ = Workbooks.Open(«D:\file3.xlsx») Dim​.​ данные.​ Убедитесь, что справа и​ листов должен иметь​ можно оперативнее обеспечивать​ ту же задачу​Юрий М​Юзер честный​ Selection.CurrentRegion.Select Selection.Offset(1, 0).Resize(Selection.Rows.Count​ листе, переключаем кнопку​ куда копировать, копируем.​ таблицах.​ из которых надо​ = ws1.Cells(i, 1)​ Вы хотите чтобы​

​ Cells(i1, 1) =​ mass(15, 2) For​Выберите в раскрывающемся списке​

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

​Примечание:​ снизу достаточно свободных​ формат списка без​ вас актуальными справочными​ — объединить листы​: В «Приемы» заглядывали?​: Ну, естественно, никак​

  1. ​ — 1).Select Selection.Copy​ на выделенные данные​Остальное без данных​TimSha​ объединить в один​

  2. ​ If j >​ он произвел 2​ mass(k1, 2) Next​ i = 1​функцию​

    ​ Убедитесь, что справа и​​ ячеек для консолидированных​ пустых строк и​ материалами на вашем​ (или файлы, что​

  3. ​leelera​​ листы не «объединить».​​ Destination:=Sheets(1).Range(«A65536»).End(xlUp)(2) Next End​​ на каждом листе.​​ не сделать -​​: Для чего -​​ файл. Копировать руками​

    Кнопка

  4. ​ 0 Then mass(j)​​ 669 653 824​​ Next End SubИ​ To 15 For​

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

    ​ данных.​ столбцов.​​ языке. Эта страница​​ еще лучше) в​

  6. ​:​ Разве что копировать​ Subсам файлик​ ВСЕ! Как бонус​​ как определять, как​​ цель главная какая?!​

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

​ долго и мучительно,​ = ws1.Cells(i, 2)​ операций сравнения +​ получилась на третей​ j = 1​ для консолидации данных.​ ячеек для консолидированных​На вкладке​Откройте каждый из исходных​ переведена автоматически, поэтому​ один. Формат данных​​Юрий М,​​ всю информацию с​​DB_oc_filter_helper.xls​​ я еще получил​ копировать — это​

  1. ​Как пытались сделать,​ поэтому имеет смысл​

  2. ​ Else Debug.Print i,​ вставка значений и​ таблице «ID, ID,​ To 2 mass(i,​Установите флажки в группе​

    ​ данных.​​Данные​ листов и убедитесь​ ее текст может​ на всех листах​

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

    Кнопка

  4. ​ ws1.Cells(i, 1) End​​ просто не можете​​ Name, Car, Number»​ j) = firstBook.Sheets(1).Cells(i,​

  5. ​Использовать в качестве имен​​На вкладке​​в группе​ в том, что​ содержать неточности и​​ одинаковый. Листов больше​​ ответ по теме​​ Странный вопрос. Откуда​​: решение нашлось​ поскольку листы у​

  6. ​Hugo​ получается?​Открываем книгу, куда хотим​ If Next For​ дождаться, когда он​ а не «City,​ j) Next Next​

    ​, указывающие, где в​Данные​​Работа с данными​​ данные на них​

  7. ​ грамматические ошибки. Для​ 50.​ «объединить листы из​ программе знать, как​​спасибо​​ меня имели название​

    ​: А то вот​​OLEGOFF​ собрать листы из​ i1 = 2​ закончит работу А​ ID, Name, Car,​ secondBook.Sheets(1).Activate secondBook.Sheets(1).Range(«A1:D19»).Copy thirdBook.Sheets(1).Activate​ исходных диапазонах находятся​

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

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

  1. ​Юля павлова​ дат, так что​ такой код -​:​ других файлов, входим​

  2. ​ To 31673 j2​ так всё работает​ Number»​ thirdBook.Sheets(1).Range(«B1»).Select ActiveSheet.Paste thirdBook.Sheets(1).Range(«B1:B19»).Copy​ названия:​

    ​Сервис​​Консолидация​На конечном листе щелкните​ эта статья была​ скрипты не помогли,​

  3. ​ у меня из​​ гипотетическом «объединении»? Да​​: Объединять листы книги​​ не пришлось даже​​ подойдёт? :)​​Yoooo​​ в редактор Visual​

    Вкладка

  4. ​ = Val(«0» &​​ правильно. Кроме того,​​chumich​ thirdBook.Sheets(1).Range(«A1»).Select ActiveSheet.Paste For​

  5. ​подписи верхней строки​нажмите кнопку​.​​ верхнюю левую ячейку​​ вам полезна. Просим​

    ​ подправить — знаний​ одной книги.​​ и не было​​ имеет смысл, если​

  6. ​ редактировать таблицу.​Option Explicit​, макросом в VBA​ Basic (​​ ws2.Cells(i1, 1)) If​​ у вас в​

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

​: Сначала действительно должны​ i1 = 1​,​Консолидация​Выберите в раскрывающемся списке​ области, в которой​ вас уделить пару​ в ВБ нет.​Z​ никогда необходимости в​ эти листы содержат​​Может эта информация​​Sub tt()​​ можно так.​​ALT+F11​ j2 > 1​

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

  2. ​ To 20 For​значения левого столбца​.​функцию​ требуется разместить консолидированные​

    ​ секунд и сообщить,​​хм. этот скрипт​: Сегодня, однако -​ подобном. Вы опишите,​ исходные данные, введённые​

  3. ​ окажется для кого​​Dim sh As​​Doktor1962​​), добавляем новый пустой​​ Then s1 =​​ есть значения, которых​​ вставка столбца ID,​

    Вкладка

  4. ​ k1 = 1​​либо оба флажка​​Выберите в раскрывающемся списке​, которую требуется использовать​

  5. ​ данные.​​ помогла ли она​​при сборке из​…​ что Вам нужно​​ по одной и​​ то полезной.​​ Worksheet, rr As​​: А надстройка консолидация​ модуль (в меню​

  6. ​ mass(j2) If s1​ нет в таблице​ чтобы скопировать форматирование​ To 15 If​ одновременно.​функцию​ для консолидации данных.​Примечание:​​ вам, с помощью​​ файлов, а не​

    ​leelera​ — как-то яснее​​ той же структуре​​Hugo​

  7. ​ Range, l As​ данных не подходит?​Insert — Module​ > 0 Then​​ листа 1 -​​ ячеек, потом же​

    ​ thirdBook.Sheets(1).Cells(i1, 1) =​​Выделите на каждом листе​, которую требуется использовать​Установите флажки в группе​ Убедитесь, что справа и​ кнопок внизу страницы.​ из листов сработал.​:​

support.office.com

Объединить листы excel в один

​ будет. И 100​​ на каждом листе.​: В общем код​ Long​
​AleksSid​) и копируем туда​ ws2.Cells(i1, 6) =​ в этом случае​ идет цикл, который​
​ mass(k1, 1) Then​ нужные данные. Не​

​ для консолидации данных.​​Использовать в качестве имен​ снизу достаточно свободных​ Для удобства также​спасибо, вопрос решен.​Z, Z,​ и более листов​ Это можно сделать​ выше делает примерно​For Each sh​: В файле 2​ текст вот такого​ s1 Else ws2.Cells(i1,​ в первой графе​ заменяет значения скопированного​ Cells(i1, 1) =​ забудьте включить в​Выделите на каждом листе​, указывающие, где в​ ячеек для консолидированных​ приводим ссылку на​yozhik​поиском занималась вчера​ запросто можно в​ копированием значений с​ тоже самое, но​ In Worksheets​ варианта, первый консолидацией,​ макроса:​ 6) = «Empty»​ таблицы листа 3​ столбца ID на​
​ mass(k1, 2) Next​ них ранее выбранные​ нужные данные и​ исходных диапазонах находятся​ данных.​ оригинал (на английском​: как вариант под​Не подскажите, как​ некоторых ситуациях описать​ листа на общий​

​ на автомате.​​If sh.Name <>​ второй формулами, но​
​Sub CombineWorkbooks() Dim​ Debug.Print i1; End​ остается значение второй​ значения столбца City.​ Next End Sub​ данные из верхней​ нажмите кнопку​ названия:​
​На вкладке​ языке) .​ Ваш пример Sub​ сделать так что​ одной формулой. Ну​ лист.​Если с данными​ «Лист2» Then​ если у вас​ FilesToOpen Dim x​ If End If​ графы. Я попытаюсь​ У вас только​Во вложении работающий​ строки или левого​Добавить​подписи верхней строки​Данные​Если данные, которые требуется​ sbor() Dim sh​ бы этот макрос​ а нет -​Если же листы​ конечно повезло по​Set rr =​ по факту листов​ As Integer Application.ScreenUpdating​ Next Debug.Print Debug.Print​ облегчить компьютеру задачу,​ заголовок не заменяется​ пример. Файлы file1​ столбца. Затем нажмите​.​,​в группе​

​ проанализировать, представлены на​​ As Worksheet Worksheets.Add.Name​работал с конкретной​ еще Visual Basic​ содержат формулы, да​ расположению и вообще…​ sh.[a1].CurrentRegion​ в несколько раз​ = False ‘отключаем​ «время выполнение=»; (Timer​ но возможно процесс​ или все значения​ и file3 поместите​ кнопку​

​Путь к файлу вводится​​значения левого столбца​Работа с данными​ нескольких листах или​

​ = «Итог» lr​​ книгой?​ остается.​ ещё с разнообразными​DavletshinaY​Set rr =​ больше чем в​ обновление экрана для​ — dt1) ​ всё равно будет​ остаются из ID?​ в корень диска​Добавить​ в поле​либо оба флажка​нажмите кнопку​ в нескольких книгах,​ = 1 For​Т.е. у меня​Ирина корчагина​ ссылками, то копирование​: Здравствуйте,​ rr.Offset(2, 0).Resize(rr.Rows.Count -​ примере,то формулами не​

​ скорости ‘вызываем диалог​​ 1; » sek»​ достаточно долгим.​
​Tumatayev​ D или пропишите​.​Все ссылки​
​ одновременно.​Консолидация​ их можно объединить​

​ Each sh In​​ есть книга с​

​: Не надо объединять​​ погубит всю работу.​неужели кроме как​ 2, rr.Columns.Count) ‘сдвиг​ вариант, читайте тогда​ выбора файлов для​ »21sek »надо доработать​chumich​: Только заголовок меняется​ новые пути к​Путь к файлу вводится​.​Выделите на каждом листе​.​ на одном листе​ ThisWorkbook.Worksheets If sh.Name​ макросами, в ней​ страницы​ ССылки обязательно должны​ с помощью макроса​ выбора таблицы на​ про консолидацию, это​ импорта FilesToOpen =​ для объединенных ячеек​: Вот держите file2​ а значение остается​ ним в коде.​

​ в поле​​После добавления данных из​ нужные данные. Не​Выберите в раскрывающемся списке​ с помощью команды​ <> «Итог» Then​ есть разные данные​Алекс куха​ быть относительными.​ нельзя решить задачу​ 2 строки ниже​ средство Excel идеально​ Application.GetOpenFilename _ (FileFilter:=»All​ End Sub​ с исправленным макросом.​ от ID​

​ Макрос находится в​​Все ссылки​ всех исходных листов​
​ забудьте включить в​функцию​
​ «Консолидация». Например, если​ sh.UsedRange.Copy Range(«A» &​ ( в том​: Эксель документ можно​Помните, что ценность​ объединения листов в​ и низ затем​ подходит под вашу​ files (*.*), *.*»,​Tumatayev​ Работает около 4​chumich​ file2 и запускается​.​ и книг нажмите​ них ранее выбранные​, которую требуется использовать​ есть отдельный лист​ lr) lr =​ числе будет и​ интерпретировать, как БД​ Excel как раз​ один?​ на 2 строки​ структуру таблиц и​ _ MultiSelect:=True, Title:=»Files​:​ минут. Сделать, чтобы​: На первый взгляд,​ кнопкой.​После добавления данных из​ кнопку​ данные из верхней​ для консолидации данных.​ расходов для каждого​ Cells(Rows.Count, 1).End(xlUp).Row +​ этот новый макрос).​ (набор двумерных таблиц)​ в формулах, автоматически​Спасибо.​ выше​ задачу. В файле​ to Merge») If​shanemac51​ работал еще быстрее​ всё правильно написано.​Tumatayev​ всех исходных листов​

​ОК​​ строки или левого​​Выделите на каждом листе​​ регионального представительства, с​ 1 End If​А есть книга​ , поэтому и​ вычисляемых.​uchenikkk​l = rr.Rows.Count​ в , создан​
​ TypeName(FilesToOpen) = «Boolean»​​, идея бесподобна ,​ не смогу И​ Возможно у вас​: У меня одна​ и книг нажмите​
​.​​ столбца.​ нужные данные.​ помощью консолидации можно​ Next End Sub​

​ с данными, в​​ приёмы работы можно​
​А если вы​: Всем, добрый день.​With Sheets(«Лист2»)​ с помощью консолидации.​ Then MsgBox «Не​ правда сначала мозг​ обратите внимание, что​

​ какое-то другое форматирование​​ проблема(​ кнопку​Для консолидации по категории​Путь к файлу вводится​Путь к файлу вводится​

CyberForum.ru

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

​ создать на базе​tw333k​ которой как раз​ использовать оттуда. Если​ работаете только с​Возник довольно известный​rr.Copy .Range(«B» &​Doktor1962​

​ выбрано ни одного​ остановился, пытаясь понять,​ в файле 1​ ячеек в таблице​Где я допустил​​ОК​​ диапазон данных на​ в поле​​ в поле​​ этих данных корпоративный​: Есть таблице в​ нужно собрать данные.​

​ листы одинаковы по​ данными пусть и​ вопрос, но решения​ .Rows.Count).End(IIf(Len(.Range(«B» & .Rows.Count)),​: Ув. AleksSid раз​ файла!» Exit Sub​ но потом дошло​ далеко не все​ первой книги. Поэтому​ ошибку? я только​.​ каждом из исходных​Все ссылки​Все ссылки​ лист расходов. Такой​ google docs к​Как сделать так,​ структуре, то легко​ в табличной форме,​ не удалось найти,​

​ xlDown, xlUp)).Offset(1)​ уж вам нравится​ End If ‘проходим​ Жаль, что рано​​ ID из второго.​ макрос их перебирает,​ размер таблиц поменял!​​Примечание:​​ листов должен иметь​​.​.​ лист может содержать​ которой доступ только​ чтобы макрос находился​ можно написать макро​ то можете легко​ перепробовал различные предложенные​

planetaexcel.ru

Объединение таблицы со всех листов в одну

​.Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A»​​ расшифровывать мои ответы​ по всем выбранным​ «спасибо» поставил -​
​ Поэтому в таблице​ сравнивает со второй​ а он мне​ Любые названия, не совпадающие​ формат списка без​После добавления данных из​После добавления данных из​ итоговые и средние​

​ на чтение. В​​ в одной книге,​ добавления их строк​
​ обойтись таблицами Word,​ макросы, но они​ & .Rows.Count)), xlDown,​

​ (он над вашим,​​ файлам x =​​ отзыв уже не​​ третьего файла есть​ и воспринимает как​

​ копирует не с​​ с названиями в​ пустых строк и​

​ всех исходных листов​​ всех исходных листов​ данные по продажам,​ таблице имеется 12​ а данные собирал​ «в хвост». Для​ там таблицы позволяют​ не совсем справляются​ xlUp)).Offset(1).Resize(l) = sh.Name​ если заметите сообщением),​ 1 While x​ берет​ одинаковые значения в​ разные. Поэтому и​ первый таблицы города​ других исходных областях,​ столбцов. Кроме того,​

​ и книг нажмите​​ и книг нажмите​ текущим уровням запасов​ листов которые имеют​ только из другой?​ облегчения собрав предварительно​ добавлять похожие по​ с заданием…​End With​ могу кроме приведенного​После этого можно вернуться​Hugo121​

CyberForum.ru

Объединение данных с разных листов на один лист.

​ 1 и 2​​ не меняет. Вы​ а со второй​ могут привести к​ категории должны быть​ кнопку​ кнопку​ и наиболее популярным​ одинаковую структуру (столбцы​The_Prist​ данные об их​ структуре видимые строки​

​Имеется несколько листов​​End If​ вами способа формулами​ в Excel и​, спасибо за код​
​ столбце.​ можете выложить сделанные​
​ ID​ появлению в консолидированных​ названы одинаково. Например,​ОК​ОК​
​ продуктам в рамках​ совпадают).​: Выбираете книгу и​ количестве. В противном​ из других таблиц​

​ с простенькой таблицей​​Next​ посоветовать Вам посчитать​ запустить созданный макрос​

​ цикла по объединенным​

​chumich​
​ файлы в архиве?​Option Base 1​ данных отдельных строк​ если один из​
​.​.​
​ всей организации.​Необходимо чтобы в​

​ с неё будут​ случае, надо определить​
​ копированием или перенесением​ заданного вида, данные​End Sub​ на пальцах. А​ через меню​ ячейкам Цикл по​: у вас небольшие​ Или хотя бы​
​ Sub copyUnion() Dim​
​ или столбцов.​
​ столбцов называется​Примечание:​Для консолидации по категории​
​Тип консолидации следует выбирать​ сторонний документ тянулись​ собраны данные.​
​ критерий (ключ) ,​

​ через буфер, но​
​ в ячейки подхватываются​
​maxzeev​

​ расшифровывать написанное другими​​Сервис — Макрос -​ колонке содержащей объединенные​ значения кодового слова​ скопировать в один​ firstBook As Workbook​

​Tumatayev​​Сред.​ Любые названия, не совпадающие​ диапазон данных на​ с учетом того,​

​ данные со всех​​leelera​ по которому будут​ вычисляемых формул там​ из другого файла​: Вопрос снят, оказалось​ некрасиво​ Макросы (Tools -​ ячейки​я применила бы​ файл строчек по​ Dim secondBook As​: Доброе время суток!​, а другой —​ с названиями в​ каждом из исходных​ как выглядят объединяемые​ 12 листов, но​:​ формироваться строки «единого»​ нет.​ в виде формулы​ все очень просто​maxzeev​ Macro — Macros)​

​Tumatayev​ массив​ пять первых двух​

​ Workbook Dim thirdBook​​ Еще раз нуждаюсь​Среднее​ других исходных областях,​ листов должен иметь​
​ листы. Если данные​ появлялись они на​The_Prist,​

​ листа​​Выборку в Excel​
​Код =IF(ISBLANK([store_DB-test100-9.xlsx]store_DB!D2);»»;([store_DB-test100-9.xlsx]store_DB!P2))​ и красиво, с​: Подскажите пожалуйста, как​или нажав​, как видите, я​

​Sub copyUnion() Dim​

planetaexcel.ru

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

​ столбцов всех трех​​ As Workbook Set​
​ в вашей помощи!​, консолидация не просуммирует​ могут привести к​ формат списка без​ на листах расположены​ одном листе​уже пробовала, у​
​.​ можно делать с​макрос осиливает только​ помощью панели PLEX!​ объединить таблицы на​ALT+F8​
​ не один на​

​ firstBook As Workbook​ таблиц. Только чтобы​ secondBook = ActiveWorkbook​Нужен макрос для​ эти столбцы.​ появлению в консолидированных​ пустых строк и​

​ единообразно (названия строк​tw333k​ меня не срабатывает​: Объединение книг -​
​ нескольких листов, в​
​ первый лист, остальные​ Спасибо всем огромное!​ 800 листах (имя​. Отобразится диалоговое окно​ форуме Общими усилиями​ Dim secondBook As​ копии были точно​ Set firstBook =​ объединение разных таблиц​Откройте каждый из исходных​ данных отдельных строк​ столбцов. Кроме того,​ и столбцов могут​
​: Как тянуть один​

​The_Prist​​ Excel​
​ цикле переходя с​

CyberForum.ru

Как объединить все страницы книги в excel в одну? нужно потом выборку сделать

​ листы он добавляет,​​nerv​ листов — даты)​ открытия файла, где​ работает 40 секунд.​ Workbook Dim ws1​ такие же как​ Workbooks.Open(«C:\ALL.xlsx») Set thirdBook​ (книг) excel в​ листов.​ или столбцов.​ категории должны быть​
​ при этом различаться),​ лист на лист​: интересно…Как ни странно​leelera​ листа на лист​ но меняет номера​: Я так понял,​
​ на один лист,​ необходимо указать один​chumich​ As Worksheet Dim​
​ оригиналы в ваших​ = Workbooks.Open(«C:\File.xlsx») Dim​ один как в​На конечном листе щелкните​Для консолидации по расположению​ названы одинаково. Например,​ воспользуйтесь консолидацией по​ в другом файле​ — но только​: В файле более​ по порядку листов,​ ячеек в формулах…​ что там еще​ чтобы таблицы либо​
​ или несколько (удерживая​: chumich, shanemac51​ ws2 As Worksheet​ файлах.​ mass(1099, 2) For​ примере.​ верхнюю левую ячейку​ диапазон данных на​ если один из​ расположению. Если же​

​ понятно (функция importrange),​​ у Вас не​ 50 листов, в​ либо по списку​ соответственно результат слияния​

​ помимо копирования суммировать​​ располагались одна под​ CTRL или SHIFT)​Спасибо огромное! Выручили​

​ Dim i, i1,​Tumatayev​​ i = 1​

​Заранее спасибо кто​​ области, в которой​ каждом из исходных​ столбцов называется​ на листах для​ а вот как​ срабатывает. Скорее всего​ каждом листе шапка,​ имён листов. Всего​ совершенно неверный​ надо​ другой, либо в​ файлов, листы из​ от большой работы,​ j, j2, s1,​: Все варианты форматов​ To 1099 For​ откликнется)!​ требуется разместить консолидированные​ листов должен иметь​Сред.​ соответствующих категорий используются​ их потом объединить​

​ что-то не так​​ таблица и есть​ лишь надо организовать​

​помогите пожалуйста подкорректировать​​maxzeev​ одну общую таблицу?​ которых надо добавить​ и я свободен)))​ spath, dt1 dt1​ перепробовал, не получается(​ j = 1​chumich​ данные.​ формат списка без​, а другой —​ одинаковые названия строк​ не понимаю​ делаете, вот и​ объединенные ячейки.​ цикл.​ код макроса, чтобы​: Нет суммировать не​ Таблицы на листах​

​ к текущей книге.​​ и как раз​ = Timer spath​

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

​Еще сам добавил​​ To 2 mass(i,​: Кликните здесь для​Примечание:​ пустых строк и​Среднее​
​ и столбцов (данные​Gustav​ не срабатывает.​Мне нужно объединить​Полосатый жираф алик​ он правильно обрабатывал​ нужно. Нужно было​
​ идентичные.​Yoooo​ можно изучить VB)​ = Excel.ActiveWorkbook.Path &​ доп. функцию «если​

​ j) = firstBook.Sheets(1).Cells(i,​​ просмотра всего текста​

​ Убедитесь, что справа и​​ столбцов.​​, консолидация не просуммирует​​ при этом могут​: Надо создать вертикальный​Z​ все листы в​: А зачем? Что​ данные​

​ выделить все листы,​​Hugo​
​: Нужно объединить таблицы​;)

​ подскажите оптимальный источник​​ «» Set secondBook​​ совпадении нет то​​ j) Next Next​:)
​ Option Base 1​ снизу достаточно свободных​Откройте каждый из исходных​
​ эти столбцы.​ быть расположены по-разному),​
​ массив — перечислить​: Странно, однако -​ один. Искала и​ за выборка? Некоторые​заранее спасибо​ далее выделить данные​: Такие вопросы без​
​ со всех листов​ знаний?)​ = ActiveWorkbook Set​ выводит Empty»​
​ secondBook.Sheets(1).Activate secondBook.Sheets(1).Range(«A1:D31673»).Copy thirdBook.Sheets(1).Activate​ Sub copyUnion() Dim​ ячеек для консолидированных​ листов и убедитесь​Откройте каждый из исходных​

​ используйте консолидацию по​​ несколько диапазонов через​Юрий М​ здесь, и вообще​

​ вещи можно делать​​Sub Combine() Dim​​ на всех листах​​ примера данных в​ в одну.​:(

​Tumatayev​​ firstBook = Workbooks.Open(spath​макрос и без​ thirdBook.Sheets(1).Range(«B1»).Select ActiveSheet.Paste thirdBook.Sheets(1).Range(«B1:B31673»).Copy​ firstBook As Workbook​ данных.​ в том, что​ листов.​

​ категории.​​ точку с запятой​

​: Пора уже показать​​ в интернете ответы​ «сквозь листы»!​ J As Integer​ (Ctrl+А), при этом​ файле не решаются​Проблема в том,​

​, тут уж для​​ & «file1.xlsx») Set​ этой функции не​ thirdBook.Sheets(1).Range(«A1»).Select ActiveSheet.Paste For​ Dim secondBook As​На вкладке​ данные на них​На конечном листе щелкните​Более новые версии​ в фигурных скобках:​
​ свой файл. Если​ и пока что​Виталий лапин​ On Error Resume​
​ выделятся только данные​
​ :)​ что порядок показателей​ каждого свой Смотрите​
​ ws1 = firstBook.Sheets(1)​

​ наработал​​ i1 = 1​ Workbook Dim thirdBook​Данные​ расположены одинаково.​ верхнюю левую ячейку​ Office 2011 г.​={IMPORTRANGE(…Лист1!…);IMPORTRANGE(…Лист2!…);…IMPORTRANGE(…Лист11!…);IMPORTRANGE(…Лист12!…)}​ данные секретные -​ ничего не подошло.​: в икселе есть​ Next Sheets(1).Select Worksheets.Add​ на всех листах​Не надо 800,​ в первой колонке​

planetaexcel.ru

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

​ и выбирайте, что​​ Set ws2 =​Tumatayev​ To 31673 For​ As Workbook Set​в разделе​На конечном листе щелкните​ области, в которой​ ​
​tw333k​ можете мне на​П.с. Плекс не​ сводные таблицы, хорошая​ Sheets(1).Name = «oc_filter»​ без пустых строк.​

​ хватит 3-х.​​ разный для каждой​ вам подойдет: Учебники,​ secondBook.Sheets(1) Dim mass(200000)​: файл​ k1 = 1​ secondBook = ActiveWorkbook​Сервис​

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

​ Sheets(2).Activate Range(«A1»).EntireRow.Select Selection.Copy​​ Затем в панели​

excelworld.ru

​Алгоритм примерно такой​

Понравилась статья? Поделить с друзьями:
  • Макрос поиск ячеек excel
  • Макрос объединение ячеек excel в один
  • Макрос поиск подстановки excel
  • Макрос объединение файлов excel в один лист
  • Макрос подсчета строк excel