Добрый день! Прошу помочь вот в каком вопросе. Есть исходная таблица - отчёт, в первой колонке которой содержится список ответственных лиц "Трговый представитель" (пример во вложении). Ломал голову, но никаких идей даже нет, как с помощью макроса сделать так, чтобы эта таблица разбивалась на отдельные таблицы,отсортированные по "Торговый представитель" для возможности распечатки отчёта по каждому представителю с сохранением шапки. Причём каждый раз количество сторк с представителем будет разная (сейчас Алексей - 1, Василий - 7, Дмитрий - 1 и т.д., а может быть Алексей - 8, Василий - 2, и т.д. или вообще не быть некоторых представителей). Макросу должно быть всё равно, сколько строк или сотолбцов в исходной талице (каждый раз будет разная). Прошу помочь, т.к. VBA я ещё только-только начал изучать, а по работе данный макрос сильно помог бы.
Заранее спасибо всем ответившим.
Добрый день! Прошу помочь вот в каком вопросе. Есть исходная таблица - отчёт, в первой колонке которой содержится список ответственных лиц "Трговый представитель" (пример во вложении). Ломал голову, но никаких идей даже нет, как с помощью макроса сделать так, чтобы эта таблица разбивалась на отдельные таблицы,отсортированные по "Торговый представитель" для возможности распечатки отчёта по каждому представителю с сохранением шапки. Причём каждый раз количество сторк с представителем будет разная (сейчас Алексей - 1, Василий - 7, Дмитрий - 1 и т.д., а может быть Алексей - 8, Василий - 2, и т.д. или вообще не быть некоторых представителей). Макросу должно быть всё равно, сколько строк или сотолбцов в исходной талице (каждый раз будет разная). Прошу помочь, т.к. VBA я ещё только-только начал изучать, а по работе данный макрос сильно помог бы.
Город - это место проживания? Или место проведения операции? Это к тому, что может ли быть один представитель, действующий в нескольких городах? Если это так, то как сортировать даты - город-дата- или только по дате?
Город - это место проживания? Или место проведения операции? Это к тому, что может ли быть один представитель, действующий в нескольких городах? Если это так, то как сортировать даты - город-дата- или только по дате?AndreTM
AndreTM, Сосртировать даты не нужно. Нужно чтобы макрос сортировал и создавал новую таблицу только по торговому представителю. Т.е., как только в строчке меняется содержимое 1 колонки (например Алексей на Васю), то макрос сразу же разбивает таблицу и "клеит" шапку. В закладке "Как должно быть" я так и показал.
AndreTM, Сосртировать даты не нужно. Нужно чтобы макрос сортировал и создавал новую таблицу только по торговому представителю. Т.е., как только в строчке меняется содержимое 1 колонки (например Алексей на Васю), то макрос сразу же разбивает таблицу и "клеит" шапку. В закладке "Как должно быть" я так и показал.master-dd
А зачем сразу-то править результат? Это излишние телодвижения и нагрузка... Выходные данные вам требуются (вы же сами говорите) для распечатки отчета по представителю - так из этого и надо исходить. Вот есть данные, вот вы внесли все изменения (да хоть одно изменение), нажали на кнопочку - и получили результат. И при этом можно ведь не формировать всех представителей, если вам для распечатки нужен только один - просто надо его предварительно указать как-то. Опять же, раз вы собираетесь формировать отдельные файлы - то зачем вам сейчас формирование общего (пусть и разбитого по представителям) списка? Файлы вы формируете для чего - рассылать их будете? Или просто вы не знаете, как иначе распечатать данные по отдельному представителю? И почему это не надо сортировать даты, если вы собираетесь делать отчёт-распечатку?..
Вот, посмотри пример. Там просто делается выборка на отдельный лист по одному текущему представителю.
А зачем сразу-то править результат? Это излишние телодвижения и нагрузка... Выходные данные вам требуются (вы же сами говорите) для распечатки отчета по представителю - так из этого и надо исходить. Вот есть данные, вот вы внесли все изменения (да хоть одно изменение), нажали на кнопочку - и получили результат. И при этом можно ведь не формировать всех представителей, если вам для распечатки нужен только один - просто надо его предварительно указать как-то. Опять же, раз вы собираетесь формировать отдельные файлы - то зачем вам сейчас формирование общего (пусть и разбитого по представителям) списка? Файлы вы формируете для чего - рассылать их будете? Или просто вы не знаете, как иначе распечатать данные по отдельному представителю? И почему это не надо сортировать даты, если вы собираетесь делать отчёт-распечатку?..
Вот, посмотри пример. Там просто делается выборка на отдельный лист по одному текущему представителю.AndreTM
Но я постараюсь развёрнуто ответить на Ваш вопрос.
В моей работе существует такое явление, как переводной заказ (ПЗ). Торговый представитель дистрибутора нашей продукции, приходя в торговую точку обязан внести в заявку тот заказ, который в этой точке ранее оставил наш представитель (ПЗ): наша фирма напрямую торговлей не занимается, но участвует в формировании заказов на свою продукцию розницей. Т.к. ПЗ - это бумажка, которую розниник/продавец/завмаг до момента прихода торгового представителя может потерять, этому представителю крайне важно иметь у себя копию. Итак, наш представитель, составив в точке заявку оставляет бумажный ПЗ,а сам дублирует эот ПЗ в электронном виде в программе EPZ (это проект VBA в Excel). Я её сам написал с учётом специфики своей работы. Наш представитель за день посещает много точек, которые обслуживают разные торговые представители. И в конце дня, нажатием кнопочки формируется и автоматичекси отправляется файлик с электронными ПЗ, сведённымив одну таблицу, информация в которой отсортирована по 1-й колонке (по Торговому представителю). Человеку, который этот файл получает необходимо распечатать и раздать каждому представителю свой список и так, чтобы в него не попали точки других представителей. Теперь, получается, используя Ваш совет я могу в главный файл прописать Ваш макрос, "углубив" и "расширив" и человек, получивший его становясь на определённую ячейку сразу сможет распечатывать нужного точки нужного представителя. НО! Хотелось бы, чтобы он УЖЕ получал несколько файлов, разбитых по каждому представителю (как сделать уникальные названия, привязанные к дате создания ПЗ я знаю). Заранее спасибо!
AndreTM, Большое спасибо за помощь.
Но я постараюсь развёрнуто ответить на Ваш вопрос.
В моей работе существует такое явление, как переводной заказ (ПЗ). Торговый представитель дистрибутора нашей продукции, приходя в торговую точку обязан внести в заявку тот заказ, который в этой точке ранее оставил наш представитель (ПЗ): наша фирма напрямую торговлей не занимается, но участвует в формировании заказов на свою продукцию розницей. Т.к. ПЗ - это бумажка, которую розниник/продавец/завмаг до момента прихода торгового представителя может потерять, этому представителю крайне важно иметь у себя копию. Итак, наш представитель, составив в точке заявку оставляет бумажный ПЗ,а сам дублирует эот ПЗ в электронном виде в программе EPZ (это проект VBA в Excel). Я её сам написал с учётом специфики своей работы. Наш представитель за день посещает много точек, которые обслуживают разные торговые представители. И в конце дня, нажатием кнопочки формируется и автоматичекси отправляется файлик с электронными ПЗ, сведённымив одну таблицу, информация в которой отсортирована по 1-й колонке (по Торговому представителю). Человеку, который этот файл получает необходимо распечатать и раздать каждому представителю свой список и так, чтобы в него не попали точки других представителей. Теперь, получается, используя Ваш совет я могу в главный файл прописать Ваш макрос, "углубив" и "расширив" и человек, получивший его становясь на определённую ячейку сразу сможет распечатывать нужного точки нужного представителя. НО! Хотелось бы, чтобы он УЖЕ получал несколько файлов, разбитых по каждому представителю (как сделать уникальные названия, привязанные к дате создания ПЗ я знаю). Заранее спасибо!master-dd
Сообщение отредактировал master-dd - Воскресенье, 19.05.2013, 21:09
Ну так сформированную выборку в файл скинуть - это пять строчек кода... Можно сделать операцию так: когда отбор произведен, на листе с результатом нажимается кнопочка "Записать в файл". Самое интересное, что можно сделать и разные режимы - например, можно включать-отключать интерактив (т.е. по формировании выборки - она записывается в файл автоматом), можно построить "надстройку" над вышеприведенным кодом в том плане, что перебрать весь список Представителей и сформировать сразу все файлы (или, скажем, выбрать только некоторых Представителей и формировать), можно ещё что-то... Кстати, методы реализации тех или иных действий зависят ещё и от того, как у вас уже организовано хранилище и интерфейс. Ведь наверняка у вас уже есть либо именованный диапазон, либо отдельный лист со списком Представителей - а это означает, что мне уже не надо извращаться, например, отбирая уникальные имена представителей. С другой стороны, если у вас в проекте меню/списки/кнопки уже организованы в UserForm'ах - можно ориентироваться на объекты интерфейса... И т.д.
Ну так сформированную выборку в файл скинуть - это пять строчек кода... Можно сделать операцию так: когда отбор произведен, на листе с результатом нажимается кнопочка "Записать в файл". Самое интересное, что можно сделать и разные режимы - например, можно включать-отключать интерактив (т.е. по формировании выборки - она записывается в файл автоматом), можно построить "надстройку" над вышеприведенным кодом в том плане, что перебрать весь список Представителей и сформировать сразу все файлы (или, скажем, выбрать только некоторых Представителей и формировать), можно ещё что-то... Кстати, методы реализации тех или иных действий зависят ещё и от того, как у вас уже организовано хранилище и интерфейс. Ведь наверняка у вас уже есть либо именованный диапазон, либо отдельный лист со списком Представителей - а это означает, что мне уже не надо извращаться, например, отбирая уникальные имена представителей. С другой стороны, если у вас в проекте меню/списки/кнопки уже организованы в UserForm'ах - можно ориентироваться на объекты интерфейса... И т.д.AndreTM
AndreTM, Можно, но я не подумал, что с помощью макроса, формирующего основную таблицу (которую потом необходимо разбить) нельзя записать в файл, содержащий основную таблицу, другой макрос (Ваш). Пробовал - не получилось. В связи с этим другой вопрос. В приложении - реальный файл-отчёт, который получит дистрибутор. Как сделать так, чтобы при его формировании в него уже прописывался ваш код? (необходимо, чтобы макрос из одного файла - любого, для примера - прописывал Ваш код в главный файл) И самое главное - в этом файле, после создания макроса этот макрос должен остаться. А у меня при закрытии выскакивает вот такое сообщение: "The following features cannot be saved in macro-free workbooks: VB project ... ". А мне необходимо, чтобы файл был сохранён именно в .xls
AndreTM, Можно, но я не подумал, что с помощью макроса, формирующего основную таблицу (которую потом необходимо разбить) нельзя записать в файл, содержащий основную таблицу, другой макрос (Ваш). Пробовал - не получилось. В связи с этим другой вопрос. В приложении - реальный файл-отчёт, который получит дистрибутор. Как сделать так, чтобы при его формировании в него уже прописывался ваш код? (необходимо, чтобы макрос из одного файла - любого, для примера - прописывал Ваш код в главный файл) И самое главное - в этом файле, после создания макроса этот макрос должен остаться. А у меня при закрытии выскакивает вот такое сообщение: "The following features cannot be saved in macro-free workbooks: VB project ... ". А мне необходимо, чтобы файл был сохранён именно в .xls master-dd
Доброго дня! нужен аналогичный макрос. при разбитии таблицы на файлы, имя нового файла совпадало бы с именем критерия, по которому формируются новые таблицы. На примере вышеприложенного файла, нужно чтобы в файле "Петр" должна быть таблица с Петрами... можно?
Доброго дня! нужен аналогичный макрос. при разбитии таблицы на файлы, имя нового файла совпадало бы с именем критерия, по которому формируются новые таблицы. На примере вышеприложенного файла, нужно чтобы в файле "Петр" должна быть таблица с Петрами... можно?Rampl
Сообщение отредактировал Rampl - Вторник, 28.05.2013, 13:53
Rampl, а в чём проблема-то? Формируйте результат в том виде, в каком вам надо - вынесите "критерий" в первые строчки (до заголовка), скопируйте таблицу без первого столбца... Затем при формировании файла со страницы результата - просто возьмите нужные данные из ячеек листа и подставьте в имя файла. Те самые "пять строк кода".
Rampl, а в чём проблема-то? Формируйте результат в том виде, в каком вам надо - вынесите "критерий" в первые строчки (до заголовка), скопируйте таблицу без первого столбца... Затем при формировании файла со страницы результата - просто возьмите нужные данные из ячеек листа и подставьте в имя файла. Те самые "пять строк кода".AndreTM