Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

объединение таблиц из разных файлов в один файл 1 таблицы

Автор Rinalaz, 29.09.2014, 13:55

« назад - далее »

Rinalaz

Здравствуйте!
Помогите, пожалуйста, с объединением данных в сводный отчет сразу с сортировкой...
Суть: есть отчеты преподавателей с листами "1-УМР" и "2-УМР", этих отчетов на каждой кафедре может быть разное количество. Необходимо в другой файл "Отчет по кафедре" на аналогичные листы в аналогичные таблицы свести по строкам из файлов преподавателей, но в первом столбце должны быть ФИО преподавателя, чья строка добавляется.
1 проблема) количество строк в таблицах у каждого преподавателя может быть разным.
2 проблема ) после последней строки первого преподавателя должна быть первая строка второго преподавателя и т.д. Т.е. было например: 3 таблицы по 10, 12, 15 строк, а надо получить 1 таблицу с 10+12+15=37 строк и новым столбцом "ФИО", а также автоматическими итогами....
3 проблема) т.к. пользоваться фильтрами научить не представляется возможности, необходимо итоговую таблицу пересортировать...Например, чтоб вначале шли все строки по одному факультету, потом по другому...Т.е. тоже самое что сделал бы фильтр, но уже готовая таблица сразу по всем факультетам...
Пример прилагаю...Вручную очень неудобно и трудоемко, т.к. кафедр больше 60...и данные ещё могут потом поменять...На свод данных дали 3 дня...уже замучилась руками, знаю что есть макросы для ускорения...с других листов (таблицы проще) получила данные, но тут...совсем запуталась

как я понимаю, что-то подобное рассматривалось тут
https://forum.msexcel.ru/index.php?topic=9433.0   , но мой мозг перегрелся...

как я сама понимаю, вполне можно использовать это:

Sub GetValue()
Dim f As String, AdrSh
Dim i As Byte, j As Byte ' имеется ввиду, что сотрудников меньше, чем 255 человек
Application.ScreenUpdating = False

AdrSh = Array("1-УР'!A11:AN25)", "2-УР'!A11:AN26)") 'выбираем области с данными по диапозону из листов
arr = Empty ' Очистить переменную arr
f = Dir(ThisWorkbook.Path & "\" & "*.xls", vbNormal)
Do While f <> "" ' перебираем все файлы в текущей папке
If f <> ThisWorkbook.Name Then
For j = 0 To 1 ' номерация листов среди указанных массива Array
With Sheets(1) ' на листе "1-УМР"
.[A1].Formula = "=ToArray('" & ThisWorkbook.Path & "\[" & f & "]" & AdrSh(j) 'берем массив данных по столбцу и путь файла

End With

' Вывести считанный массив arr() на листы
Sheets("1-УР").Range("B11").Offset(, i).Resize(UBound(arr, 1), 1).Value = arr
Next j: i = i + 1
End If
f = Dir()
Loop

Sheets(1).Range("A1:A2").Formula = Empty
Application.ScreenUpdating = True
End Sub


НО не работает!! Выводится вообще 3 столбца, не понятно каких данных...и то не то...Совсем запуталась...Помогите, пожалуйста, срочно нужно...уже руками ваяю...

ShAM


Rinalaz

да, вы правы, хорошая статья! спасибо! воспользуюсь!