Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разбить сводную таблицу по условию столбца - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разбить сводную таблицу по условию столбца (Макросы/Sub)
Разбить сводную таблицу по условию столбца
avzan79 Дата: Четверг, 31.07.2014, 09:28 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Помогите решить задачу:
есть большая массивная сводная таблица, нужно эту таблицу разбить на несколько таблиц по одному из условий
Пример выкладываю. Руками делать не удобно, используя фильтры, так как в таблице более 15000 строк и более 50 столбцов. Заранее спасибо
К сообщению приложен файл: PRIMER.xlsx(13.5 Kb)
 
Ответить
СообщениеПомогите решить задачу:
есть большая массивная сводная таблица, нужно эту таблицу разбить на несколько таблиц по одному из условий
Пример выкладываю. Руками делать не удобно, используя фильтры, так как в таблице более 15000 строк и более 50 столбцов. Заранее спасибо

Автор - avzan79
Дата добавления - 31.07.2014 в 09:28
Rioran Дата: Четверг, 31.07.2014, 09:49 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
avzan79, здравствуйте.

Уточните логику работы макроса. Как я понимаю, из одной большой таблицы надо сделать много маленьких. Имена столбцов новых таблиц остаются такими же. По какому столбцу разбиваем? На каждое новое слово в столбце должен появиться новый лист с названием из этого слова?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Четверг, 31.07.2014, 09:49
 
Ответить
Сообщениеavzan79, здравствуйте.

Уточните логику работы макроса. Как я понимаю, из одной большой таблицы надо сделать много маленьких. Имена столбцов новых таблиц остаются такими же. По какому столбцу разбиваем? На каждое новое слово в столбце должен появиться новый лист с названием из этого слова?

Автор - Rioran
Дата добавления - 31.07.2014 в 09:49
avzan79 Дата: Четверг, 31.07.2014, 10:00 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Rioran, доброе утро!
да. Есть большая таблица. нужно из неё сделать несколько маленьких. Столбцы меняться не будут. Будет только расти количество строк. Раз в квартал эта таблица будет разбиваться на маленькие по условию (в примере это город рождения). Листы с названием не надо обновлять- они могут создаваться при отчете заново. Т.е. пользователь может их удалить или это будет делать макрос. Вообще по сути новых слов возникать не должно. Отчет нужен только по определенным городам
К сообщению приложен файл: PRIMER1.xlsx(15.2 Kb)


Сообщение отредактировал avzan79 - Четверг, 31.07.2014, 10:06
 
Ответить
СообщениеRioran, доброе утро!
да. Есть большая таблица. нужно из неё сделать несколько маленьких. Столбцы меняться не будут. Будет только расти количество строк. Раз в квартал эта таблица будет разбиваться на маленькие по условию (в примере это город рождения). Листы с названием не надо обновлять- они могут создаваться при отчете заново. Т.е. пользователь может их удалить или это будет делать макрос. Вообще по сути новых слов возникать не должно. Отчет нужен только по определенным городам

Автор - avzan79
Дата добавления - 31.07.2014 в 10:00
avzan79 Дата: Четверг, 31.07.2014, 13:49 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Нашел макрос, но он выдает ошибку:

[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
      
     wt.Name = IIf(Len(ws.Cells(iST, iColNo)) < 27, ws.Cells(iST, iColNo), Left(ws.Cells(iST, iColNo), 26) + Str(iSheetNo))
      
     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
      
     wt.Name = IIf(Len(ws.Cells(iST, iColNo)) < 27, ws.Cells(iST, iColNo), Left(ws.Cells(iST, iColNo), 26) + Str(iSheetNo))
      
     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]

Автор - avzan79
Дата добавления - 31.07.2014 в 13:49
Rioran Дата: Четверг, 31.07.2014, 16:09 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
avzan79, я тут упражнялся на похожую тему, думаю Вам более чем подойдёт:

1). В таблице на листе "Data" выбираете критерий разбивки, текст должен совпадать с названием одного из столбцов.
2). Нажимаете на кнопку "Разбить" и макрос по шаблону создаёт дочерние таблицы (предварительно удалив листы, которые были раньше).
3). Кнопка "Сбросить" просто удаляет текущую разбивку на дочерние листы.
4). На каждом листе есть кнопки перехода на другие листы + есть лист "Меню" откуда можно попасть на любой дочерний лист.

В книге может быть сколь угодно строк или столбцов. Лишь бы не было пустых ячеек в столбцах, по которым делаем разбивку.
К сообщению приложен файл: Magic_List.xlsm(28.1 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеavzan79, я тут упражнялся на похожую тему, думаю Вам более чем подойдёт:

1). В таблице на листе "Data" выбираете критерий разбивки, текст должен совпадать с названием одного из столбцов.
2). Нажимаете на кнопку "Разбить" и макрос по шаблону создаёт дочерние таблицы (предварительно удалив листы, которые были раньше).
3). Кнопка "Сбросить" просто удаляет текущую разбивку на дочерние листы.
4). На каждом листе есть кнопки перехода на другие листы + есть лист "Меню" откуда можно попасть на любой дочерний лист.

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

Автор - Rioran
Дата добавления - 31.07.2014 в 16:09
avzan79 Дата: Четверг, 31.07.2014, 16:37 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Rioran, спасибо. помучаю)))
 
Ответить
СообщениеRioran, спасибо. помучаю)))

Автор - avzan79
Дата добавления - 31.07.2014 в 16:37
Hugo Дата: Четверг, 31.07.2014, 17:42 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2878
Репутация: 643 ±
Замечаний: 0% ±

На планете Sanja написал рабочий макрос.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеНа планете Sanja написал рабочий макрос.

Автор - Hugo
Дата добавления - 31.07.2014 в 17:42
Rioran Дата: Четверг, 31.07.2014, 17:56 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Hugo, привет.

Дублирование темы пользователем или чужая похожая тема? Можешь поделиться ссылкой? Хочу сравнить. У меня-то не макрос, а почти целый проект =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеHugo, привет.

Дублирование темы пользователем или чужая похожая тема? Можешь поделиться ссылкой? Хочу сравнить. У меня-то не макрос, а почти целый проект =)

Автор - Rioran
Дата добавления - 31.07.2014 в 17:56
Hugo Дата: Четверг, 31.07.2014, 18:24 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2878
Репутация: 643 ±
Замечаний: 0% ±

Дубль темы http://www.planetaexcel.ru/forum....f_fid=1
Я там ещё думаю нормальный алгоритм расписал, но не торопился реализовывать.
Хотя стандартно напрашивается на фильтре и делать (сперва только собрать уникальные города в коллекцию) - но мне фильтры как-то не нравятся...
В общем вариантов куча, как делал Sanja - я даже и не думал в эту сторону :)


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеДубль темы http://www.planetaexcel.ru/forum....f_fid=1
Я там ещё думаю нормальный алгоритм расписал, но не торопился реализовывать.
Хотя стандартно напрашивается на фильтре и делать (сперва только собрать уникальные города в коллекцию) - но мне фильтры как-то не нравятся...
В общем вариантов куча, как делал Sanja - я даже и не думал в эту сторону :)

Автор - Hugo
Дата добавления - 31.07.2014 в 18:24
Rioran Дата: Четверг, 31.07.2014, 18:39 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Hugo, спасибо за ссылку. Я всё прям по твоему алгоритму сделал, включая список навигации =) Решение Санжи прикольное, мне флажки понравились.

avzan79, просьба следовать правилам относительно дублирования тем.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеHugo, спасибо за ссылку. Я всё прям по твоему алгоритму сделал, включая список навигации =) Решение Санжи прикольное, мне флажки понравились.

avzan79, просьба следовать правилам относительно дублирования тем.

Автор - Rioran
Дата добавления - 31.07.2014 в 18:39
Hugo Дата: Четверг, 31.07.2014, 19:00 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2878
Репутация: 643 ±
Замечаний: 0% ±

Прикольное, но медленное - этож сколько дел на каждую строку нужно сделать!


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеПрикольное, но медленное - этож сколько дел на каждую строку нужно сделать!

Автор - Hugo
Дата добавления - 31.07.2014 в 19:00
Rioran Дата: Четверг, 31.07.2014, 20:29 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Hugo, а сравни с моим, интересно мнение эксперта =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеHugo, а сравни с моим, интересно мнение эксперта =)

Автор - Rioran
Дата добавления - 31.07.2014 в 20:29
Hugo Дата: Четверг, 31.07.2014, 20:52 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2878
Репутация: 643 ±
Замечаний: 0% ±

Как-то сходу не въехал в алгоритм - это какой-то другой подход. Похоже что я не эксперт :( А разбираться недосуг.
Ну судя по тому, что кода не много - думаю имеет право быть :)
Но много обращений к ячейкам во вложенных циклах - на больших объёмах будет заметно.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеКак-то сходу не въехал в алгоритм - это какой-то другой подход. Похоже что я не эксперт :( А разбираться недосуг.
Ну судя по тому, что кода не много - думаю имеет право быть :)
Но много обращений к ячейкам во вложенных циклах - на больших объёмах будет заметно.

Автор - Hugo
Дата добавления - 31.07.2014 в 20:52
makao Дата: Пятница, 09.01.2015, 15:41 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Rioran,

А можно сделать, чтобы названия листов были "Лист1" "Лист2"?
 
Ответить
СообщениеRioran,

А можно сделать, чтобы названия листов были "Лист1" "Лист2"?

Автор - makao
Дата добавления - 09.01.2015 в 15:41
Rioran Дата: Пятница, 09.01.2015, 16:35 | Сообщение № 15
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
makao, да, можно, но зачем?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеmakao, да, можно, но зачем?

Автор - Rioran
Дата добавления - 09.01.2015 в 16:35
makao Дата: Пятница, 09.01.2015, 17:13 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Rioran,

Я позволил себе взять ваш макрос и немного изменил. У меня есть список людей (100+ шт) с несколькими записями, и мне нужно их разкидать (записи) в отдельные листы и отправиль через аутлук людям из списка (тоисть, например есть Иван Дулин и у него 15 записей, я сортирую его по инициалах (еще можно по мейлу или по уникальному номеру) и дальше должен отправить ему письмо с записями). Ваш макрос создает имя для листа, по критерию сортировки. Вообщем-то неплохо, я дописал небольшой макрос, чт оработает через аутлук и добавил его на кнопку. Но приходится на кажом листу ее кликать)))) Хотелось, чтобы листы називались "Sheet1, Sheet2 (стандартное название екселя)", у меня есть макрос, что сразу на все отправляет, но он ссылается на название листа, а прописивать 100 шт затруднительно, ктому же они меняются. И вот думаю как мне сделать, чтобы они шли Sheet1 и.т.д.
 
Ответить
СообщениеRioran,

Я позволил себе взять ваш макрос и немного изменил. У меня есть список людей (100+ шт) с несколькими записями, и мне нужно их разкидать (записи) в отдельные листы и отправиль через аутлук людям из списка (тоисть, например есть Иван Дулин и у него 15 записей, я сортирую его по инициалах (еще можно по мейлу или по уникальному номеру) и дальше должен отправить ему письмо с записями). Ваш макрос создает имя для листа, по критерию сортировки. Вообщем-то неплохо, я дописал небольшой макрос, чт оработает через аутлук и добавил его на кнопку. Но приходится на кажом листу ее кликать)))) Хотелось, чтобы листы називались "Sheet1, Sheet2 (стандартное название екселя)", у меня есть макрос, что сразу на все отправляет, но он ссылается на название листа, а прописивать 100 шт затруднительно, ктому же они меняются. И вот думаю как мне сделать, чтобы они шли Sheet1 и.т.д.

Автор - makao
Дата добавления - 09.01.2015 в 17:13
Rioran Дата: Пятница, 09.01.2015, 17:26 | Сообщение № 17
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
makao, возможно, проще будет унифицировать ваш Outlook макрос, который отправляет со всех листов. Предлагаю создать новую тему в разделе "Другие приложения" с кодом Вашего макроса и файлом-примером, а сюда выложить ссылку на эту тему. Посмотрим, что можно сделать.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеmakao, возможно, проще будет унифицировать ваш Outlook макрос, который отправляет со всех листов. Предлагаю создать новую тему в разделе "Другие приложения" с кодом Вашего макроса и файлом-примером, а сюда выложить ссылку на эту тему. Посмотрим, что можно сделать.

Автор - Rioran
Дата добавления - 09.01.2015 в 17:26
Pelena Дата: Пятница, 09.01.2015, 17:45 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 14877
Репутация: 3251 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Роман, у автора уже есть своя тема, из которой он уже ушел, как я поняла


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеРоман, у автора уже есть своя тема, из которой он уже ушел, как я поняла

Автор - Pelena
Дата добавления - 09.01.2015 в 17:45
makao Дата: Пятница, 09.01.2015, 17:46 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Rioran,

Ссылка на тему

http://www.excelworld.ru/forum/4-15125-1
 
Ответить
СообщениеRioran,

Ссылка на тему

http://www.excelworld.ru/forum/4-15125-1

Автор - makao
Дата добавления - 09.01.2015 в 17:46
Rioran Дата: Пятница, 09.01.2015, 20:43 | Сообщение № 20
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Pelena, спасибо за наблюдение.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеPelena, спасибо за наблюдение.

Автор - Rioran
Дата добавления - 09.01.2015 в 20:43
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разбить сводную таблицу по условию столбца (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!