Макрос для консолидации данных в excel

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

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

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

consolid1.gif

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

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

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

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

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

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

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

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

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

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

consolidation2.png

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

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

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

    consolidation3.png

  4. Установите курсор в строку Ссылка (Reference) и, переключившись в файл Иван.xlsx, выделите таблицу с данными (вместе с шапкой). Затем нажмите кнопку Добавить (Add) в окне консолидации, чтобы добавить выделенный диапазон в список объединяемых диапазонов.
  5. Повторите эти же действия для файлов Риты и Федора. В итоге в списке должны оказаться все три диапазона:

    consolidation4.png

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

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

consolidation5.png

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

consolidation6.png

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

  • Макрос для автоматической сборки данных с разных листов в одну таблицу 
  • Макрос для сборки листов из нескольких файлов

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

Уважаемые, Форумчане!доброго времени суток! очень нужна Ваша помощь (с VBA даже не на Вы).

Есть несколько абсолютно однотипных книг только с разными названиями (количество и названия листов в книгах совпадают), необходимо консолидировать данные следующим образом, например три книги: книга1, книга2 и книга3, в каждой соответственно лист1, лист2, лист3, нужно создать копию книги, очистить диапазон ячеек для консолидации (с этим я справилась), и консолидировать по след. принципу: в копии на листе1 консолидировать диапазон ячеек (всегда постоянный, например, B10:B20) с листа1!книги1, листа1!книги2, листа1!книги3 и т.д; на листе2 — данные B10:B20 с листа2!книги1, с листа2!книги2, листа2!книги3 и т.д. и соответственно на листе3 консолидировать B10:B20 все листы3 из всех книг, на 4-ом четвертые и т.д. по индексу не получится, ибо порядок листов может отличаться

т.е. как я понимаю, берем имя листа в книге, где будет результат консолидации, ищем листы с таким же названием в книгах с данными и консолидируем (функция сумма, связь с данными — True). Количество книг и листов может быть разное. проблема организовать перебор одновременно по книгам и листам.
Заранее, огромное спасибо!!!!

You have got the most part figured out. Here is what I recommend.

Set a name for 1 main worksheet in the file from where the macro is run so that you can delete all sheets except that one sheet in 1 go. Let’s say that the main sheet is «MainSheet»

For example

Sub Sample()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "MainSheet" Then
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
    Next ws
End Sub

Now you can add this code to the beginning of your code. I have modified your code. All I am doing in your code is after the sheet is created, simply delete the columns after Z.

See this (UNTESTED)

Sub test()
    Dim FilePath As String, fName As String
    Dim aWB As Workbook, sWB As Workbook
    Dim ws As Worksheet
    Dim ColName As String

    Set aWB = ThisWorkbook

    '~~> Delete sheets
    For Each ws In aWB.Sheets
        If ws.Name <> "MainSheet" Then
            Application.DisplayAlerts = False
            ws.Delete
            Application.DisplayAlerts = True
        End If
    Next ws

    FilePath = "D:binny" '<~~ Change to suit

    fName = Dir(FilePath & "*.xls")

    Do While fName <> ""
        If fName <> aWB.Name Then
            Set sWB = Workbooks.Open(Filename:=FilePath & fName, UpdateLinks:=0)
            sWB.Sheets("Final Cost").Move after:=aWB.Sheets(aWB.Sheets.Count)
            sWB.Close False
            '~~> The sheet is copied, simply delete the columns after Z
            With aWB.Sheets(aWB.Sheets.Count)
                .Name = fName
                .Cells.Copy
                .Cells.PasteSpecial xlPasteValues
                '~~> Get the last column Name
                ColName = Split(.Cells(, .Columns.Count).Address, "$")(1)
                .Columns("AA:" & ColName).Delete
            End With
        End If
        fName = Dir
    Loop
    Set sWB = Nothing: Set aWB = Nothing
End Sub

Give it a try and if you get any errors, let me know which line and I will rectify it.

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

Впервые с консолидацией данных я столкнулся, когда на ПК использовалась программа для обработки электронных таблиц типа SuperCalc.

Затем этот механизм консолидации перекочевал и в EXCEL. Возможно, что этот же механизм использовался и в Lotus 1-2-3, но я не уверен до конца, т.к. не использовал в этой программе этот метод.

Во всяком случае Lotus раньше был лидером в обработке электронных таблиц и первым начал использовать макросы, правда своеобразные. Это своеобразие в применении макросов можно было увидеть и в разработке российского  текстового редактора Лексикон. Применение макросов резко ускоряло обработку однотипных данных. Способ создания макросов в Лексикон такой же, как и способ создания макросов в Excel методом преобразования действий над таблицами или текстов в язык макросов с последующей записей этих макросов.

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

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

Но у меня почему-то постоянно возникала какая-то ошибка в коде. Возможно этой ошибки кода и не было, но макрос не работал. Тогда я пошёл по другому пути. Разбил программный код на два макроса. Первый макрос создавал программный код  для консолидации во втором макросе. Второй макрос, созданный программным путем запускается и всё правильно обрабатывает. Я оставил так как есть. Всё работает, но почему не работал первый вариант, я так и не понял.

Располагаю ссылку на работающий вариант Excel файла.

Консолидация данных в Excel

Можно посмотреть способы консолидации данных и с помощью обычных формул на Youtub

In this article, we are going to show you how to consolidate text with Pivot Table in Excel 2013 or newer.

Download Workbook

If you are using Office 365, also see our alternative approach for consolidating text in Excel. Thanks to the dynamic array functions like UNIQUE and FILTER, you can achieve the same result with a more dynamic approach.

Consolidating text strings using Pivot Table

The example below contains category names (Name), and corresponding text values (Ability) we want to consolidate.

With a regular Pivot Table, you can easily group categories and consolidate numbers (see Pivot Table Alternative Using Formulas). You can’t do this using formulas in a Pivot Table, but you can add this feature using DAX formulas.

To be able to use a DAX formula in a regular pivot table, you need to create a Data Model. Here are the steps:

  1. Click on your data.
  2. Follow Insert > Pivot Table > From Table/Range (this might look different based on your Excel version).
    How to consolidate text with Pivot Table in Excel 01
  3. Enable the Add this data to the Data Model checkbox in the PivotTable from range or table.
  4. Click OK to create a pivot table.
    How to consolidate text with Pivot Table in Excel 02
  5. Before adding fields into the pivot table area, you need to create the measure to be used in consolidating the text strings. Right-click on the table name in the PivotTable Fields pane and click Add Measure.
    How to consolidate text with Pivot Table in Excel 03
  6. Give the measure a name and enter the formula based on your data. Then, click OK to add the measure.
    How to consolidate text with Pivot Table in Excel 04
  7. Once the measure is ready, move the category field (Name) into Rows and new measure (Abilities in our sample) into Values. The pivot table will show the results.
    How to consolidate text with Pivot Table in Excel 05

How it works

The CONCATENATEX function is an updated version of the old CONCATENATE function. The DAX version can merge an array of strings with a given delimiter.

The DAX formulas also requires a table and column name as well. Thus, the syntax is the following:

=CONCATENATEX( <Table Name> , <Column Name> , <Delimiter> )

Once the measure is ready, you can use it like any other pivot table field. The pivot table can group or filter the data, and also run the formula in the measure.

Программы и макросы для объединение файлов Excel, создания сводных (итоговых) файлов, консолидация файлов Excel

  • Логотип надстройки Unification

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

  • Сравнение столбцов в Excel, и подстановка значений в таблицу

    Программа предназначена для сравнения и подстановки значений в таблицах Excel.
    Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
    и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
    надстройка «Lookup» поможет сделать это нажатием одной кнопки.
     
    То же самое можно сделать при помощи формулы =ВПР(), но:

    формулы…

  • Обработка данных из файлов Excel - отображение информации на индикаторе состояния


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

    функцию FilenamesCollection для получения списка файлов в папке

    функцию GetFolder для вывода диалогового окна выбора папки с запоминанием выбранной папки

    прогресс-бар для отображения…

  • К примеру, есть у вас несколько десятков (или сотен) текстовых файлов с подобным содержимым:
    (количество файлов, и количество строк данных в каждом файле не ограничено)
    1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;1
    1c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1
    1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1
    А надо из всего этого…

  • Загрузка (импорт) файла CSV на лист Excel


    Надстройка предназначена для облегчения импорта данных в Excel из текстовых файлов с разделителями (например, из CSV)

    Пока во вложении — обычный файл Excel с нужными макросами, надстройку выложу позже

    В надстройке применена функция получения ссылки на заданную пользователем ячейку.
    Основой для надстройки послужила функция загрузки CSV файла в двумерный массив

    Использовать функции…

  • Создание списка файлов из папки со значениями ячеек из этих файлов

    Макрос FilenamesWithValues предназначен для получения списка файлов Excel из заданной папки, и загрузки значений из каждого найденного файла.
    В отдельной ячейке задаётся путь к папке, которая будет просмотрена в поисках файлов Excel.
    При формировании списка файлов проставляются гиперссылки на найденные файлы, указывается дата создания файла.
    Из каждого файла загружаются значения с…

  • Форма редактирования и просмотра заказа


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

    Основные функции программы:

    создание (заполнение) новых заказов

    редактирование существующих заказов

    объединение нескольких заказов в один

    формирование заявки на продукцию на основании данных их сформированных заказов

    Для каждого заказа предусмотрен выбор клиента из базы данных (если клиент…

  • Результат объединения данных из файлов Excel


    Программа предназначена для загрузки списка товаров из актов о приеме-передаче основных средств.
    Поддерживаются акты по формам № ОС-3.1 и № ОС-3.3, возможно добавить поддержку актов других форм (в формате Excel).
    При запуске макроса, выводится диалоговое окно выбора папки, после чего, в выбранной папке, производится поиск всех файлов Excel.
    Для каждого из найденных файлов Excel, программа…

  • Вид объединённого прайс-листа автозапчастей


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

    ВНИМАНИЕ: Описанная в данной статье программа послужила прототипом для новой, многофункциональной программы, где пользователь сам может настраивать обработку прайс-листов

    Новая программа объединения и обработки прайс-листов доступна на сайте для…

  • Программное формирование оглавления Книги заявок


    Программа предназначена для работы с заявками на оборудование.

    Цели программы:

    автоматизация составления и редактирования заявок

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

    формирование отчётов по категориям и типам заявок

    стандартизация печатной формы заявок

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

     …

  • Формирование отчётов по предприятиям нефтегазодобывающей промышленности


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

    Добыча

    Переработка

    Сбыт

    Сервис

    Анализ

    На распределение

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

  • Отчёт по ликвидности портфелей ценных бумаг


    Программа предназначена для обработки отчётов управления по сделкам с ценными бумагами

    Основные функции программы:

    Создание новых отчётов управления (за следующий квартал) на основании текущих отчётов

    Внесение изменений и дополнений в существующие отчёты

    Формирование сводной таблицы по вкладам для оценки роста, а также коэффициентов ликвидности и версификации вкладов

    Обработка…

  • Результат объединения отчётов из 1С


    Программа предназначена для объединения однотипных отчётов, сформированных программой 1С
    Обрабатываемые отчёты (файлы Excel) хранятся в одной папке, и имеют структуру, изображенную на скриншоте:

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

  • Скриншот программы поиска и объединения файлов


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

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