Вопрос следующий: имеется некоторое количество книг excel со стандартным образцом таблиц с различными данными. Необходимо перенести все данные в одну книгу, в одну таблицу на один лист. Как сие действие совершить, ума не приложу Может с помощью макросов сделать? Или кто предложит более простой способ. В примере прикрепил пару книг. Т.е. просто перенос сведений из книги в книгу, но только с условием, что имеются сведения в первом столбце.
PS Может ранее поднималась подобная тема, увы, не нашел подходящего. PSS Поскольку нельзя прикрепить больше двух файлов, то сделал пример нескольких книг на двух листах одной.
Доброго времени суток.
Вопрос следующий: имеется некоторое количество книг excel со стандартным образцом таблиц с различными данными. Необходимо перенести все данные в одну книгу, в одну таблицу на один лист. Как сие действие совершить, ума не приложу Может с помощью макросов сделать? Или кто предложит более простой способ. В примере прикрепил пару книг. Т.е. просто перенос сведений из книги в книгу, но только с условием, что имеются сведения в первом столбце.
PS Может ранее поднималась подобная тема, увы, не нашел подходящего. PSS Поскольку нельзя прикрепить больше двух файлов, то сделал пример нескольких книг на двух листах одной.Slaventiy
Может сводная из нескольких диапазонов консолидации?
Увы, там необходимо указать функцию, а мне надо, чтобы просто был перенос данных из нескольких книг в одну, причем не просто в одну книгу, а на один лист в одну таблицу. Смысл примерно таков: создается основная книга с таблицей "Свод". В эту таблицу добавляются данные из первой книги, которая находится в одной папке с главной. В конце основной таблицы должны добавляться сведения из второй книги и т.д. Т.е. в итоге получается длинная "портянка" данных из множества книг на одном листе.
Может сводная из нескольких диапазонов консолидации?
Увы, там необходимо указать функцию, а мне надо, чтобы просто был перенос данных из нескольких книг в одну, причем не просто в одну книгу, а на один лист в одну таблицу. Смысл примерно таков: создается основная книга с таблицей "Свод". В эту таблицу добавляются данные из первой книги, которая находится в одной папке с главной. В конце основной таблицы должны добавляться сведения из второй книги и т.д. Т.е. в итоге получается длинная "портянка" данных из множества книг на одном листе.Slaventiy
Slaventiy Привет! Уважаемый AndreTM в этой теме помог написать макрос для копирования таблиц из книги с заданным именем. Возможно такой подход поможет и Вам. Макрос вставляется в модуль книги, и выглядит так: [vba]
Код
Sub GetData()
cFileName = UCase([Имя_ячейки в которой указано название файла]) cSheetName = "Название_листа_с_которого_подгружается_инфа"
cPath = "Путь_где_лежит_файл_откуда_тянется_инфа" If Dir(cPath & "\" & cFileName & ".xls") = "" Then MsgBox "Файл не найден!" & cFileName & ".xls" Exit Sub End If
nRow = Cells(Rows.Count, 4).End(xlUp).Row While nRow > 1 If UCase(Cells(nRow, 4)) = cFileName Then Rows(nRow).Delete End If nRow = nRow - 1 Wend ActiveSheet.UsedRange
Dim oSour As Range Set oDest = Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 1) Set oWB = Workbooks.Open(cPath & "/" & cFileName & ".xls", , True) With oWB.Sheets(cSheetName) Set oSour = Intersect(.Columns("A:R"), .UsedRange) End With Set oSour = oSour.Offset(1).Resize(oSour.Rows.Count - 1, oSour.Columns.Count) oSour.Copy oDest oDest.Offset(, 18).Resize(oSour.Rows.Count) = cFileName oWB.Close False
End Sub
[/vba] Set oSour = Intersect(.Columns("A:R"), .UsedRange) - A:R - диапазон столбцов, которые нужно копировать. Логика простая. Последовательно указываете названия файлов, из которых нужно собрать Вашу "портянку", и макросом по кнопке это дело собирается.
Slaventiy Привет! Уважаемый AndreTM в этой теме помог написать макрос для копирования таблиц из книги с заданным именем. Возможно такой подход поможет и Вам. Макрос вставляется в модуль книги, и выглядит так: [vba]
Код
Sub GetData()
cFileName = UCase([Имя_ячейки в которой указано название файла]) cSheetName = "Название_листа_с_которого_подгружается_инфа"
cPath = "Путь_где_лежит_файл_откуда_тянется_инфа" If Dir(cPath & "\" & cFileName & ".xls") = "" Then MsgBox "Файл не найден!" & cFileName & ".xls" Exit Sub End If
nRow = Cells(Rows.Count, 4).End(xlUp).Row While nRow > 1 If UCase(Cells(nRow, 4)) = cFileName Then Rows(nRow).Delete End If nRow = nRow - 1 Wend ActiveSheet.UsedRange
Dim oSour As Range Set oDest = Cells(Cells(Rows.Count, 4).End(xlUp).Row + 1, 1) Set oWB = Workbooks.Open(cPath & "/" & cFileName & ".xls", , True) With oWB.Sheets(cSheetName) Set oSour = Intersect(.Columns("A:R"), .UsedRange) End With Set oSour = oSour.Offset(1).Resize(oSour.Rows.Count - 1, oSour.Columns.Count) oSour.Copy oDest oDest.Offset(, 18).Resize(oSour.Rows.Count) = cFileName oWB.Close False
End Sub
[/vba] Set oSour = Intersect(.Columns("A:R"), .UsedRange) - A:R - диапазон столбцов, которые нужно копировать. Логика простая. Последовательно указываете названия файлов, из которых нужно собрать Вашу "портянку", и макросом по кнопке это дело собирается.ArkaIIIa
Сообщение отредактировал ArkaIIIa - Вторник, 07.10.2014, 09:17
Макрос хорош, но есть один момент - таблице не статична, т.е. она постоянно дополняется. Таким образом диапазон будет постепенно расширяться, не геометрически, а по чуть-чуть. Указывать же с запасом - не есть гут... Т.е. если вначале в каждой книге второго порядка будет по десять строк (к примеру), то постепенно их количество будет увеличиваться, где-то +1 строка, где-то +10.
Макрос хорош, но есть один момент - таблице не статична, т.е. она постоянно дополняется. Таким образом диапазон будет постепенно расширяться, не геометрически, а по чуть-чуть. Указывать же с запасом - не есть гут... Т.е. если вначале в каждой книге второго порядка будет по десять строк (к примеру), то постепенно их количество будет увеличиваться, где-то +1 строка, где-то +10.Slaventiy
Slaventiy Строки копируются все, от первой до последней заполненной. А вот если таблицы будут меняться по столбцам - то нужно будет вносить изменения в макрос.
Slaventiy Строки копируются все, от первой до последней заполненной. А вот если таблицы будут меняться по столбцам - то нужно будет вносить изменения в макрос.ArkaIIIa
[/vba] Она вставляет в 18 столбец название файла, из которого загружена та или иная инфа. Если у Вас диапазон столбцов больше, чем 18, ну или просто Вам название файла-исходника без надобности - просто удалите эту строку из кода.
Slaventiy Кстати, обратите внимание на строчку в конце макроса: [vba]
[/vba] Она вставляет в 18 столбец название файла, из которого загружена та или иная инфа. Если у Вас диапазон столбцов больше, чем 18, ну или просто Вам название файла-исходника без надобности - просто удалите эту строку из кода.ArkaIIIa