Помогите решить задачу: есть большая массивная сводная таблица, нужно эту таблицу разбить на несколько таблиц по одному из условий Пример выкладываю. Руками делать не удобно, используя фильтры, так как в таблице более 15000 строк и более 50 столбцов. Заранее спасибо
Помогите решить задачу: есть большая массивная сводная таблица, нужно эту таблицу разбить на несколько таблиц по одному из условий Пример выкладываю. Руками делать не удобно, используя фильтры, так как в таблице более 15000 строк и более 50 столбцов. Заранее спасибоavzan79
Уточните логику работы макроса. Как я понимаю, из одной большой таблицы надо сделать много маленьких. Имена столбцов новых таблиц остаются такими же. По какому столбцу разбиваем? На каждое новое слово в столбце должен появиться новый лист с названием из этого слова?
avzan79, здравствуйте.
Уточните логику работы макроса. Как я понимаю, из одной большой таблицы надо сделать много маленьких. Имена столбцов новых таблиц остаются такими же. По какому столбцу разбиваем? На каждое новое слово в столбце должен появиться новый лист с названием из этого слова?Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Сообщение отредактировал Rioran - Четверг, 31.07.2014, 09:49
Rioran, доброе утро! да. Есть большая таблица. нужно из неё сделать несколько маленьких. Столбцы меняться не будут. Будет только расти количество строк. Раз в квартал эта таблица будет разбиваться на маленькие по условию (в примере это город рождения). Листы с названием не надо обновлять- они могут создаваться при отчете заново. Т.е. пользователь может их удалить или это будет делать макрос. Вообще по сути новых слов возникать не должно. Отчет нужен только по определенным городам
Rioran, доброе утро! да. Есть большая таблица. нужно из неё сделать несколько маленьких. Столбцы меняться не будут. Будет только расти количество строк. Раз в квартал эта таблица будет разбиваться на маленькие по условию (в примере это город рождения). Листы с названием не надо обновлять- они могут создаваться при отчете заново. Т.е. пользователь может их удалить или это будет делать макрос. Вообще по сути новых слов возникать не должно. Отчет нужен только по определенным городамavzan79
For iST = 2 To ws.Cells(1).CurrentRegion.Rows.Count If ws.Cells(iST, iColNo) <> ws.Cells(iST - 1, iColNo) Then Set wt = Worksheets.Add iSheetNo = iSheetNo + 1
ws.Cells(1).EntireRow.Copy Destination:=wt.Cells(1) ws.Cells(iST, iColNo).EntireRow.Copy Destination:=wt.Cells(2, 1) iTT = 3 Else ws.Cells(iST, iColNo).EntireRow.Copy Destination:=wt.Cells(iTT, 1) iTT = iTT + 1 End If Next
End Sub
[/vba]
Нашел макрос, но он выдает ошибку:
[vba]
Код
Sub TableSplit2()
Set ws = ActiveSheet
iColNo = 4 iSheetNo = 0
For iST = 2 To ws.Cells(1).CurrentRegion.Rows.Count If ws.Cells(iST, iColNo) <> ws.Cells(iST - 1, iColNo) Then Set wt = Worksheets.Add iSheetNo = iSheetNo + 1
ws.Cells(1).EntireRow.Copy Destination:=wt.Cells(1) ws.Cells(iST, iColNo).EntireRow.Copy Destination:=wt.Cells(2, 1) iTT = 3 Else ws.Cells(iST, iColNo).EntireRow.Copy Destination:=wt.Cells(iTT, 1) iTT = iTT + 1 End If Next
avzan79, я тут упражнялся на похожую тему, думаю Вам более чем подойдёт:
1). В таблице на листе "Data" выбираете критерий разбивки, текст должен совпадать с названием одного из столбцов. 2). Нажимаете на кнопку "Разбить" и макрос по шаблону создаёт дочерние таблицы (предварительно удалив листы, которые были раньше). 3). Кнопка "Сбросить" просто удаляет текущую разбивку на дочерние листы. 4). На каждом листе есть кнопки перехода на другие листы + есть лист "Меню" откуда можно попасть на любой дочерний лист.
В книге может быть сколь угодно строк или столбцов. Лишь бы не было пустых ячеек в столбцах, по которым делаем разбивку.
avzan79, я тут упражнялся на похожую тему, думаю Вам более чем подойдёт:
1). В таблице на листе "Data" выбираете критерий разбивки, текст должен совпадать с названием одного из столбцов. 2). Нажимаете на кнопку "Разбить" и макрос по шаблону создаёт дочерние таблицы (предварительно удалив листы, которые были раньше). 3). Кнопка "Сбросить" просто удаляет текущую разбивку на дочерние листы. 4). На каждом листе есть кнопки перехода на другие листы + есть лист "Меню" откуда можно попасть на любой дочерний лист.
В книге может быть сколь угодно строк или столбцов. Лишь бы не было пустых ячеек в столбцах, по которым делаем разбивку.Rioran
Дубль темы http://www.planetaexcel.ru/forum....f_fid=1 Я там ещё думаю нормальный алгоритм расписал, но не торопился реализовывать. Хотя стандартно напрашивается на фильтре и делать (сперва только собрать уникальные города в коллекцию) - но мне фильтры как-то не нравятся... В общем вариантов куча, как делал Sanja - я даже и не думал в эту сторону
Дубль темы http://www.planetaexcel.ru/forum....f_fid=1 Я там ещё думаю нормальный алгоритм расписал, но не торопился реализовывать. Хотя стандартно напрашивается на фильтре и делать (сперва только собрать уникальные города в коллекцию) - но мне фильтры как-то не нравятся... В общем вариантов куча, как делал Sanja - я даже и не думал в эту сторону Hugo
Как-то сходу не въехал в алгоритм - это какой-то другой подход. Похоже что я не эксперт А разбираться недосуг. Ну судя по тому, что кода не много - думаю имеет право быть Но много обращений к ячейкам во вложенных циклах - на больших объёмах будет заметно.
Как-то сходу не въехал в алгоритм - это какой-то другой подход. Похоже что я не эксперт А разбираться недосуг. Ну судя по тому, что кода не много - думаю имеет право быть Но много обращений к ячейкам во вложенных циклах - на больших объёмах будет заметно.Hugo
Я позволил себе взять ваш макрос и немного изменил. У меня есть список людей (100+ шт) с несколькими записями, и мне нужно их разкидать (записи) в отдельные листы и отправиль через аутлук людям из списка (тоисть, например есть Иван Дулин и у него 15 записей, я сортирую его по инициалах (еще можно по мейлу или по уникальному номеру) и дальше должен отправить ему письмо с записями). Ваш макрос создает имя для листа, по критерию сортировки. Вообщем-то неплохо, я дописал небольшой макрос, чт оработает через аутлук и добавил его на кнопку. Но приходится на кажом листу ее кликать)))) Хотелось, чтобы листы називались "Sheet1, Sheet2 (стандартное название екселя)", у меня есть макрос, что сразу на все отправляет, но он ссылается на название листа, а прописивать 100 шт затруднительно, ктому же они меняются. И вот думаю как мне сделать, чтобы они шли Sheet1 и.т.д.
Rioran,
Я позволил себе взять ваш макрос и немного изменил. У меня есть список людей (100+ шт) с несколькими записями, и мне нужно их разкидать (записи) в отдельные листы и отправиль через аутлук людям из списка (тоисть, например есть Иван Дулин и у него 15 записей, я сортирую его по инициалах (еще можно по мейлу или по уникальному номеру) и дальше должен отправить ему письмо с записями). Ваш макрос создает имя для листа, по критерию сортировки. Вообщем-то неплохо, я дописал небольшой макрос, чт оработает через аутлук и добавил его на кнопку. Но приходится на кажом листу ее кликать)))) Хотелось, чтобы листы називались "Sheet1, Sheet2 (стандартное название екселя)", у меня есть макрос, что сразу на все отправляет, но он ссылается на название листа, а прописивать 100 шт затруднительно, ктому же они меняются. И вот думаю как мне сделать, чтобы они шли Sheet1 и.т.д.makao
makao, возможно, проще будет унифицировать ваш Outlook макрос, который отправляет со всех листов. Предлагаю создать новую тему в разделе "Другие приложения" с кодом Вашего макроса и файлом-примером, а сюда выложить ссылку на эту тему. Посмотрим, что можно сделать.
makao, возможно, проще будет унифицировать ваш Outlook макрос, который отправляет со всех листов. Предлагаю создать новую тему в разделе "Другие приложения" с кодом Вашего макроса и файлом-примером, а сюда выложить ссылку на эту тему. Посмотрим, что можно сделать.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279