Страницы: 1
RSS
Создание листов на основании данных из таблицы
 
Всем привет, помогите с макросом.
Есть таблица с огромным количеством строк и столбцов, на основании столбца с наименованием города (64 столбец), необходимо создать лист с наименованием города и скопировать туда данные отфильтрованные по данному городу. Вся База 71 столбец и 400 000 строк

В дальнейшем каждый лист необходимо сохранить в качестве отдельной книги в папку с именем из столбца 7.

К сожалению ничего прикрепить для примера не могу.
Изменено: OrgaZex - 16.04.2019 16:19:59
 
Цитата
OrgaZex написал:
К сожалению ничего прикрепить для примера не могу
а придется... (если хотите получить помощь)
как минимум нужна структура таблицы данных а 400тыс строк не обязательно, но штук 4 или 40 будет в самый раз
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Макросом можно это все сделать, но нужен файл.
Кидайте в ЛС, нужны будут те данные по которым создаем листы и соответствующие данные которые копируем форматируем (их можно произвольной инфой заполнить).
Т.к. как мы их будем копировать?

Ну и работать это будет не очень быстро)
Изменено: PDO - 16.04.2019 15:07:40
 
Пример базы во вложении Пример.xlsx (9.72 КБ)
Изменено: OrgaZex - 16.04.2019 15:34:40
 
Если я правильно понимаю, то нужно создать страницы только для уникальных городов?
И как происходит фильтрация?
 
Да все верно!
Фильтрация происходит именно по городу, данные по которому нужно скопировать
 
Макрос на создание листов из списка, без проверки на уникальность имен листа(т.е. при одинаковых нименованиях города, буде ошибка выполнени макроса) и без "форматирования" данных.
Код
Sub New_Page()
Set MyCity = ThisWorkbook.Sheets(1).Cells(1048575, 64).End(xlUp)
NumberLists = MyCity.Row

For i = 2 To NumberLists
    ShName = ThisWorkbook.Sheets(1).Cells(i, 64).Value
    Worksheets.Add(After:=Sheets(Sheets.Count)).Name = ShName
Next i
End Sub
Т.е. макрос нужно доработать.  
Изменено: PDO - 17.04.2019 09:42:13
 
Я такое часто делаю без изысков - сперва цикл по данным и в СЛОВАРЬ каждому ГОРОДУ собираю коллекцию номеров его строк.
Затем цикл по словарю - создаём книгу, затем цикл по коллекции строк - копируем в созданную книгу, сохраняем файл.
Да, не особо быстро, но такие объёмы целиком в массив не запихнуть, можно "массивить" частями, но может просто быстро написать код, запустить и сходить попить кофе :)
Изменено: Hugo - 17.04.2019 10:19:57
 
Цитата
Я такое часто делаю без изысков - сперва цикл по данным и в СЛОВАРЬ каждому ГОРОДУ собираю коллекцию номеров его строк.
Это для того что бы имена листов не дублировались?

Я думал создавать листы после проверки на их наличие в книге, если лист с таким именем существует, то  добавлял бы строку на существующий лист.
Но возможно, что ваш способ будет более производительным.
Изменено: PDO - 17.04.2019 11:04:09
 
Да - в словаре будут только уникальные значения/названия, т.е на дубли ничего проверять уже не нужно. Но вот проверить на допустимость названия листа (и файла) нужно бы, хотя такой казус и маловероятен.
Страницы: 1
Наверх