Страницы: 1
RSS
Макрос для копирования данных с нескольких листов на один
 
Добрый день!
Помогите, пожалуйста, написать макрос, позволяющий копировать данные с определенных колонок нескольких листов на один лист этого же файла таким образом, чтобы данные располагались последовательно. т.е. на общем листе данные с каждого листа должны располагаться под данными предыдущего листа, а также в дополнительной колонке выводилась бы информация, с какого листа скопированы данные.
Пример во вложении. Есть данные по 3-м проектам. Необходимо скопировать информацию по товару, количеству и цене на один лист и указать в отдельной колонке проект (в файле - лист Total). Номера колонок, в которых содержится информация по товару, количеству и цене, могут различаться по каждому проекту.

Заранее спасибо!Example.xlsx (11.66 КБ)  
Изменено: Alyona - 29.09.2020 12:53:34
 
См. вариант.
(Файл удалил)
 
Юрий М,

Спасибо большое! Только, к сожалению, по Проекту3 на листе Total информация отобразилась не совсем верно в связи с тем, что порядок колонок на данном листе другой, в результате на общий лист в поле Количество попали данные по артикулам, а в поле Цена - данные по количеству. Возможно ли предусмотреть в коде, чтобы с листов 1 и 2 копировались данные из 1,2 и 3 колонок, а с листа 3 - с 1,3 и 4 колонок?

Заранее спасибо!
 
Если нет абсолютно никакой возможности переставить на итоговом листе местами столбцы, то я могу переделать макрос. Переделывать?
Минутку! А почему артикул есть не на всех листах? И где в Вашем файле на итоговом листе столбец с артикулами?
 
Юрий М,

Данные по артикулам я привела для примера, они необязательно должны быть на каждом листе и на общий лист их выводить не нужно)
Дело в том, что в реальности пример сложнее: в данный файл с помощью Power Query попадают данные с 3-х источников, в которых расположение колонок различается, а также в каждом источнике помимо данных колонок содержатся и другие, которые для сверки не требуются, но желательно, чтобы в рабочий файл они также попали, чтобы потом легче было анализировать расхождения. Необходимо сверить три источника только по 3-м параметрам.
Я поменяла расположение колонок с помощью Power Query: макрос работает)) поэтому нет необходимости переделывать. Спасибо большое!
 
Прочитать сообщение и уйти, не ответив... Или вопросы сложные?
Всегда ли артикул (если он есть) будет в столбце В?
 
Извиняюсь - обновление не срабатывало и не видел Вашего сообщенияю
Но, если наименования столбцов иду в произвольном порядке, то можно передалать макрос, чтобы он искал сам нужные позиции. Главное, чтобы заголовки совпадали.
 
Юрий М,

Если не сложно, можете подсказать, как можно изменить макрос, чтобы он сам искал определенные позиции? Часто приходится сверять такие файлы, где колонки расположены в произвольном порядке, и не всегда удобно вручную менять их расположение. Во всех файлах заголовки колонок совпадают.
 
Alyona, Разрешите поинтересоваться? А зечем вам макрос, если уже источники тянутся через PQ? Может проще сразу же и итоговую таблицу формировать в нем же?
Вот горшок пустой, он предмет простой...
 
Alyona, скорректировал макрос от Юрий М,
Код
Sub Macro1()
Dim LastRow As Long, n As Long, i As Long, FreeRow As Long, RowStart As Long, cell As Range
    LastRow = cells(Rows.Count, 1).End(xlUp).Row
    Application.ScreenUpdating = False
    Range(cells(2, 1), cells(LastRow + 1, 4)).ClearContents
    FreeRow = 2
    RowStart = 2
    For n = 1 To Sheets.Count - 1
        With Sheets(n)
            LastRow = .cells(Rows.Count, 1).End(xlUp).Row
            For i = 1 To 3
                Set cell = .Rows(1).Find(cells(1, i))
                Range(.cells(2, cell.Column), .cells(LastRow, cell.Column)).Copy cells(FreeRow, i)
            Next i
                FreeRow = cells(Rows.Count, 1).End(xlUp).Row + 1
                Range(cells(RowStart, 4), cells(FreeRow - 1, 4)).Value = Sheets(n).Name
                RowStart = FreeRow
        End With
    Next
    Application.ScreenUpdating = True
End Sub




Изменено: Mershik - 29.09.2020 15:04:38 (исправил ошибку в макросе)
Не бойтесь совершенства. Вам его не достичь.
 
PooHkrd,

А можете подсказать, как это можно реализовать через PQ? через объединение запросов?
 
Alyona, обнаружил в макросе небольшую ошибку. Переделывать его не буду - сделаю сразу с поиском нужных столбцов. Но нменого позже. Занять пока.
 
Mershik,

Всё получилось! Спасибо!!
 
Смю вариант. Столбцы на листах с исходными данными могут быть расположены  в любом порядке.
 
Юрий М,

Супер) Спасибо! Получается, макрос ищет на листах данные по названию колонок, указанных на общем листе и копирует их на этот общий лист?
 
Alyona, если учесть что таблицы у вас выгружаются с помощью PQ, то данные выводятся в умные таблицы. Показываю как пример сбора данных с таблиц при помощи Power Query.
При этом нужно учесть, что не обязательно выводить таблицы с данными на лист, объединять можно сразу запросы, и получать одну итоговую простыню.
Не обязательно делать отдельные запросы к каждому файлу, можно положить их в папку и обрабатывать пакетно.
Вот горшок пустой, он предмет простой...
 
Всё верно. Но заголовки столбцов должны совпадать. Можно немного переделать, чтобы искал и неточное совпадение.
 
PooHkrd,

Спасибо! Очень интересный вариант! К сожалению, пакетная загрузка мне не подходит именно в данном случае, т.к. все файлы-источники имеют разную структуру, и каждый файл приходится преобразовывать индивидуально, т.е. нельзя выбрать файл-пример(
 
Юрий М,

Спасибо! Можно оставить и точное совпадение)
 
Цитата
Alyona написал:
нельзя выбрать файл-пример(
это вы так думаете  ;)
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх