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

Вход

Регистрация

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

 

= Мир MS Excel/Как с помощью макроса разбить таблицу по опред. параметру? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как с помощью макроса разбить таблицу по опред. параметру?
master-dd Дата: Воскресенье, 19.05.2013, 16:04 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
Добрый день!
Прошу помочь вот в каком вопросе.
Есть исходная таблица - отчёт, в первой колонке которой содержится список ответственных лиц "Трговый представитель" (пример во вложении).
Ломал голову, но никаких идей даже нет, как с помощью макроса сделать так, чтобы эта таблица разбивалась на отдельные таблицы,отсортированные по "Торговый представитель" для возможности распечатки отчёта по каждому представителю с сохранением шапки. Причём каждый раз количество сторк с представителем будет разная (сейчас Алексей - 1, Василий - 7, Дмитрий - 1 и т.д., а может быть Алексей - 8, Василий - 2, и т.д. или вообще не быть некоторых представителей). Макросу должно быть всё равно, сколько строк или сотолбцов в исходной талице (каждый раз будет разная). Прошу помочь, т.к. VBA я ещё только-только начал изучать, а по работе данный макрос сильно помог бы.

Заранее спасибо всем ответившим.
К сообщению приложен файл: -_.xls (34.5 Kb)
 
Ответить
СообщениеДобрый день!
Прошу помочь вот в каком вопросе.
Есть исходная таблица - отчёт, в первой колонке которой содержится список ответственных лиц "Трговый представитель" (пример во вложении).
Ломал голову, но никаких идей даже нет, как с помощью макроса сделать так, чтобы эта таблица разбивалась на отдельные таблицы,отсортированные по "Торговый представитель" для возможности распечатки отчёта по каждому представителю с сохранением шапки. Причём каждый раз количество сторк с представителем будет разная (сейчас Алексей - 1, Василий - 7, Дмитрий - 1 и т.д., а может быть Алексей - 8, Василий - 2, и т.д. или вообще не быть некоторых представителей). Макросу должно быть всё равно, сколько строк или сотолбцов в исходной талице (каждый раз будет разная). Прошу помочь, т.к. VBA я ещё только-только начал изучать, а по работе данный макрос сильно помог бы.

Заранее спасибо всем ответившим.

Автор - master-dd
Дата добавления - 19.05.2013 в 16:04
AndreTM Дата: Воскресенье, 19.05.2013, 16:14 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А что это у вас в четвёртой таблице разные представители? cool

Ладно,хорошо, посмотрим, что можно сделать...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА что это у вас в четвёртой таблице разные представители? cool

Ладно,хорошо, посмотрим, что можно сделать...

Автор - AndreTM
Дата добавления - 19.05.2013 в 16:14
master-dd Дата: Воскресенье, 19.05.2013, 16:18 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
AndreTM,
Случайно получилось (в каждой таблице должен быть только 1 представитель).
 
Ответить
СообщениеAndreTM,
Случайно получилось (в каждой таблице должен быть только 1 представитель).

Автор - master-dd
Дата добавления - 19.05.2013 в 16:18
AndreTM Дата: Воскресенье, 19.05.2013, 16:56 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Город - это место проживания? Или место проведения операции? Это к тому, что может ли быть один представитель, действующий в нескольких городах?
Если это так, то как сортировать даты - город-дата- или только по дате?


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеГород - это место проживания? Или место проведения операции? Это к тому, что может ли быть один представитель, действующий в нескольких городах?
Если это так, то как сортировать даты - город-дата- или только по дате?

Автор - AndreTM
Дата добавления - 19.05.2013 в 16:56
master-dd Дата: Воскресенье, 19.05.2013, 17:01 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
AndreTM,
Сосртировать даты не нужно. Нужно чтобы макрос сортировал и создавал новую таблицу только по торговому представителю. Т.е., как только в строчке меняется содержимое 1 колонки (например Алексей на Васю), то макрос сразу же разбивает таблицу и "клеит" шапку. В закладке "Как должно быть" я так и показал.
 
Ответить
СообщениеAndreTM,
Сосртировать даты не нужно. Нужно чтобы макрос сортировал и создавал новую таблицу только по торговому представителю. Т.е., как только в строчке меняется содержимое 1 колонки (например Алексей на Васю), то макрос сразу же разбивает таблицу и "клеит" шапку. В закладке "Как должно быть" я так и показал.

Автор - master-dd
Дата добавления - 19.05.2013 в 17:01
AndreTM Дата: Воскресенье, 19.05.2013, 17:30 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
А зачем сразу-то править результат? Это излишние телодвижения и нагрузка...
Выходные данные вам требуются (вы же сами говорите) для распечатки отчета по представителю - так из этого и надо исходить.
Вот есть данные, вот вы внесли все изменения (да хоть одно изменение), нажали на кнопочку - и получили результат.
И при этом можно ведь не формировать всех представителей, если вам для распечатки нужен только один - просто надо его предварительно указать как-то. Опять же, раз вы собираетесь формировать отдельные файлы - то зачем вам сейчас формирование общего (пусть и разбитого по представителям) списка? Файлы вы формируете для чего - рассылать их будете? Или просто вы не знаете, как иначе распечатать данные по отдельному представителю? И почему это не надо сортировать даты, если вы собираетесь делать отчёт-распечатку?..

Вот, посмотри пример. Там просто делается выборка на отдельный лист по одному текущему представителю.
К сообщению приложен файл: 2-4811-1-2-.xls (59.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Воскресенье, 19.05.2013, 19:17
 
Ответить
СообщениеА зачем сразу-то править результат? Это излишние телодвижения и нагрузка...
Выходные данные вам требуются (вы же сами говорите) для распечатки отчета по представителю - так из этого и надо исходить.
Вот есть данные, вот вы внесли все изменения (да хоть одно изменение), нажали на кнопочку - и получили результат.
И при этом можно ведь не формировать всех представителей, если вам для распечатки нужен только один - просто надо его предварительно указать как-то. Опять же, раз вы собираетесь формировать отдельные файлы - то зачем вам сейчас формирование общего (пусть и разбитого по представителям) списка? Файлы вы формируете для чего - рассылать их будете? Или просто вы не знаете, как иначе распечатать данные по отдельному представителю? И почему это не надо сортировать даты, если вы собираетесь делать отчёт-распечатку?..

Вот, посмотри пример. Там просто делается выборка на отдельный лист по одному текущему представителю.

Автор - AndreTM
Дата добавления - 19.05.2013 в 17:30
master-dd Дата: Воскресенье, 19.05.2013, 21:06 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
AndreTM,
Большое спасибо за помощь.

Но я постараюсь развёрнуто ответить на Ваш вопрос.

В моей работе существует такое явление, как переводной заказ (ПЗ). Торговый представитель дистрибутора нашей продукции, приходя в торговую точку обязан внести в заявку тот заказ, который в этой точке ранее оставил наш представитель (ПЗ): наша фирма напрямую торговлей не занимается, но участвует в формировании заказов на свою продукцию розницей. Т.к. ПЗ - это бумажка, которую розниник/продавец/завмаг до момента прихода торгового представителя может потерять, этому представителю крайне важно иметь у себя копию. Итак, наш представитель, составив в точке заявку оставляет бумажный ПЗ,а сам дублирует эот ПЗ в электронном виде в программе EPZ (это проект VBA в Excel). Я её сам написал с учётом специфики своей работы. Наш представитель за день посещает много точек, которые обслуживают разные торговые представители. И в конце дня, нажатием кнопочки формируется и автоматичекси отправляется файлик с электронными ПЗ, сведённымив одну таблицу, информация в которой отсортирована по 1-й колонке (по Торговому представителю). Человеку, который этот файл получает необходимо распечатать и раздать каждому представителю свой список и так, чтобы в него не попали точки других представителей.
Теперь, получается, используя Ваш совет я могу в главный файл прописать Ваш макрос, "углубив" и "расширив" и человек, получивший его становясь на определённую ячейку сразу сможет распечатывать нужного точки нужного представителя. НО! Хотелось бы, чтобы он УЖЕ получал несколько файлов, разбитых по каждому представителю (как сделать уникальные названия, привязанные к дате создания ПЗ я знаю).
Заранее спасибо!


Сообщение отредактировал master-dd - Воскресенье, 19.05.2013, 21:09
 
Ответить
СообщениеAndreTM,
Большое спасибо за помощь.

Но я постараюсь развёрнуто ответить на Ваш вопрос.

В моей работе существует такое явление, как переводной заказ (ПЗ). Торговый представитель дистрибутора нашей продукции, приходя в торговую точку обязан внести в заявку тот заказ, который в этой точке ранее оставил наш представитель (ПЗ): наша фирма напрямую торговлей не занимается, но участвует в формировании заказов на свою продукцию розницей. Т.к. ПЗ - это бумажка, которую розниник/продавец/завмаг до момента прихода торгового представителя может потерять, этому представителю крайне важно иметь у себя копию. Итак, наш представитель, составив в точке заявку оставляет бумажный ПЗ,а сам дублирует эот ПЗ в электронном виде в программе EPZ (это проект VBA в Excel). Я её сам написал с учётом специфики своей работы. Наш представитель за день посещает много точек, которые обслуживают разные торговые представители. И в конце дня, нажатием кнопочки формируется и автоматичекси отправляется файлик с электронными ПЗ, сведённымив одну таблицу, информация в которой отсортирована по 1-й колонке (по Торговому представителю). Человеку, который этот файл получает необходимо распечатать и раздать каждому представителю свой список и так, чтобы в него не попали точки других представителей.
Теперь, получается, используя Ваш совет я могу в главный файл прописать Ваш макрос, "углубив" и "расширив" и человек, получивший его становясь на определённую ячейку сразу сможет распечатывать нужного точки нужного представителя. НО! Хотелось бы, чтобы он УЖЕ получал несколько файлов, разбитых по каждому представителю (как сделать уникальные названия, привязанные к дате создания ПЗ я знаю).
Заранее спасибо!

Автор - master-dd
Дата добавления - 19.05.2013 в 21:06
AndreTM Дата: Воскресенье, 19.05.2013, 21:30 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Ну так сформированную выборку в файл скинуть - это пять строчек кода...
Можно сделать операцию так: когда отбор произведен, на листе с результатом нажимается кнопочка "Записать в файл". Самое интересное, что можно сделать и разные режимы - например, можно включать-отключать интерактив (т.е. по формировании выборки - она записывается в файл автоматом), можно построить "надстройку" над вышеприведенным кодом в том плане, что перебрать весь список Представителей и сформировать сразу все файлы (или, скажем, выбрать только некоторых Представителей и формировать), можно ещё что-то...
Кстати, методы реализации тех или иных действий зависят ещё и от того, как у вас уже организовано хранилище и интерфейс. Ведь наверняка у вас уже есть либо именованный диапазон, либо отдельный лист со списком Представителей - а это означает, что мне уже не надо извращаться, например, отбирая уникальные имена представителей. С другой стороны, если у вас в проекте меню/списки/кнопки уже организованы в UserForm'ах - можно ориентироваться на объекты интерфейса...
И т.д.


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНу так сформированную выборку в файл скинуть - это пять строчек кода...
Можно сделать операцию так: когда отбор произведен, на листе с результатом нажимается кнопочка "Записать в файл". Самое интересное, что можно сделать и разные режимы - например, можно включать-отключать интерактив (т.е. по формировании выборки - она записывается в файл автоматом), можно построить "надстройку" над вышеприведенным кодом в том плане, что перебрать весь список Представителей и сформировать сразу все файлы (или, скажем, выбрать только некоторых Представителей и формировать), можно ещё что-то...
Кстати, методы реализации тех или иных действий зависят ещё и от того, как у вас уже организовано хранилище и интерфейс. Ведь наверняка у вас уже есть либо именованный диапазон, либо отдельный лист со списком Представителей - а это означает, что мне уже не надо извращаться, например, отбирая уникальные имена представителей. С другой стороны, если у вас в проекте меню/списки/кнопки уже организованы в UserForm'ах - можно ориентироваться на объекты интерфейса...
И т.д.

Автор - AndreTM
Дата добавления - 19.05.2013 в 21:30
master-dd Дата: Воскресенье, 19.05.2013, 21:41 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 78
Репутация: 1 ±
Замечаний: 0% ±

2016
AndreTM,
Можно, но я не подумал, что с помощью макроса, формирующего основную таблицу (которую потом необходимо разбить) нельзя записать в файл, содержащий основную таблицу, другой макрос (Ваш). Пробовал - не получилось.
В связи с этим другой вопрос. В приложении - реальный файл-отчёт, который получит дистрибутор. Как сделать так, чтобы при его формировании в него уже прописывался ваш код? (необходимо, чтобы макрос из одного файла - любого, для примера - прописывал Ваш код в главный файл) И самое главное - в этом файле, после создания макроса этот макрос должен остаться. А у меня при закрытии выскакивает вот такое сообщение: "The following features cannot be saved in macro-free workbooks: VB project ... ". А мне необходимо, чтобы файл был сохранён именно в .xls sad
 
Ответить
СообщениеAndreTM,
Можно, но я не подумал, что с помощью макроса, формирующего основную таблицу (которую потом необходимо разбить) нельзя записать в файл, содержащий основную таблицу, другой макрос (Ваш). Пробовал - не получилось.
В связи с этим другой вопрос. В приложении - реальный файл-отчёт, который получит дистрибутор. Как сделать так, чтобы при его формировании в него уже прописывался ваш код? (необходимо, чтобы макрос из одного файла - любого, для примера - прописывал Ваш код в главный файл) И самое главное - в этом файле, после создания макроса этот макрос должен остаться. А у меня при закрытии выскакивает вот такое сообщение: "The following features cannot be saved in macro-free workbooks: VB project ... ". А мне необходимо, чтобы файл был сохранён именно в .xls sad

Автор - master-dd
Дата добавления - 19.05.2013 в 21:41
AndreTM Дата: Воскресенье, 19.05.2013, 22:12 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Просто файл для дистрибуции надо формировать не "с чистого листа", а на основе шаблона, уже содержащего нужные макросы smile

ЗЫ. Приложения не вижу...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеПросто файл для дистрибуции надо формировать не "с чистого листа", а на основе шаблона, уже содержащего нужные макросы smile

ЗЫ. Приложения не вижу...

Автор - AndreTM
Дата добавления - 19.05.2013 в 22:12
Hugo Дата: Воскресенье, 19.05.2013, 22:25 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3580
Репутация: 777 ±
Замечаний: 0% ±

365
macro-free workbooks - это xlsx.
В xls макрос должен сохраняться.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщениеmacro-free workbooks - это xlsx.
В xls макрос должен сохраняться.

Автор - Hugo
Дата добавления - 19.05.2013 в 22:25
Rampl Дата: Вторник, 28.05.2013, 13:45 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Доброго дня! нужен аналогичный макрос. при разбитии таблицы на файлы, имя нового файла совпадало бы с именем критерия, по которому формируются новые таблицы. На примере вышеприложенного файла, нужно чтобы в файле "Петр" должна быть таблица с Петрами... можно?


Сообщение отредактировал Rampl - Вторник, 28.05.2013, 13:53
 
Ответить
СообщениеДоброго дня! нужен аналогичный макрос. при разбитии таблицы на файлы, имя нового файла совпадало бы с именем критерия, по которому формируются новые таблицы. На примере вышеприложенного файла, нужно чтобы в файле "Петр" должна быть таблица с Петрами... можно?

Автор - Rampl
Дата добавления - 28.05.2013 в 13:45
AndreTM Дата: Вторник, 28.05.2013, 19:07 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 501 ±
Замечаний: 0% ±

2003 & 2010
Rampl, а в чём проблема-то?
Формируйте результат в том виде, в каком вам надо - вынесите "критерий" в первые строчки (до заголовка), скопируйте таблицу без первого столбца... Затем при формировании файла со страницы результата - просто возьмите нужные данные из ячеек листа и подставьте в имя файла. Те самые "пять строк кода".


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеRampl, а в чём проблема-то?
Формируйте результат в том виде, в каком вам надо - вынесите "критерий" в первые строчки (до заголовка), скопируйте таблицу без первого столбца... Затем при формировании файла со страницы результата - просто возьмите нужные данные из ячеек листа и подставьте в имя файла. Те самые "пять строк кода".

Автор - AndreTM
Дата добавления - 28.05.2013 в 19:07
  • Страница 1 из 1
  • 1
Поиск:

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