Как написать макрос разделения данных на категории
Вложений: 1
Помогите, пожалуйста, у меня есть данные. прикрепила эксель .
со столбца А по J находится общая таблица. Мне из нее надо получить несколько таблиц для каждого дерева. Т.е. каждое дерево с его данными с A по J вывести в отдельную табличку. Со столбца М по АК я показала пример. Сейчас я это делаю руками и очень тяжело. Особенно если огромное множество деревьев. Если несложно помогите пожалуйста. |
Вложений: 1
Elizavetta, Вы владеете фильтром? Загрузите csv в Excel, наложите фильтр и копируйте отфильтрованные данные на другие листы. Пример прилагаю, иначе нужен макрос.
|
И сводные таблицы никто не отменял. Хоть десяток их сделайте
|
А я бы тупо просто отсортировал :). Хотя, если действительно «множество» — таки написал бы макрос.
|
Elizavetta, уточните задачу. У Вас какой исходный файл: csv или xlsx, xls ... и что должно получиться в результате: несколько csv или xlsx.
|
megaloman, тут csv для маленького примера ,а в жизни будет xlsx
результат должен быть в этом же экселе я там показала. т.е. для каждой породы своя табличка и они в этом же экселе идут друг за другом. Макрос нужен, потому что я фильтром и не хочу вручную. Вот отсюда и родилась просьба о макросе. Т.е. то что вы сделали фильтром мне бы макросом автоматом |
Iska, если бы было мало деревьев, я бы сама руками:)
а тут может быть сотни. Поэтому и попросили помочь по возможности, конечно) |
Elizavetta, давайте тогда так: упакуйте реальный файл в архив, каковой приложите к сообщению, либо выложите на облако или вменяемый обменик. Расскажите, что значит «вывести в отдельную табличку» — на новый Рабочий лист, в новую Рабочую книгу, и как их правильно именовать (в том варианте, который Вы выберете).
|
Iska, сделаю.
|
Iska, вот на ЯДиск выложила
https://yadi.sk/d/MQZfynlUO0OSFA на первом листе то что было, на втором я разделила по породам сама. Т.е. вот так должно быть на выходе. т.е отфильтровала березу, скопировала, ее данные, вставила. Тоже самое с другим деревом в разложенных данных есть колонка кластер, на нее не обращайте внимание, считайте что ее нет. Просто эта версия готова для отчета. Если будет проще, удалите все колонки кластер со второго листа, если сильно мешать будет. Она появляется только тогда как я все разложила сама, обработала и проставила номер кластера. В макросе ее учитывать не надо. |
Elizavetta, предлагаю немного другой вариант.
Сохраните код в файл с расширением .vbs: Скрытый текст
Код:
Option Explicit Затем просто перетащите на него Ваш файл с Рабочей книгой Excel. Спустя некоторое время Вы должны получить эту Рабочую книгу с несколькими новыми Рабочими листами, согласно уникальных данных из третьего столбца Рабочего листа «исходные данные», наподобие: Скрытый текст
Дальше Вы можете поступать с этой открытой Рабочей книгой по своему усмотрению. |
Жаль выбрасывать в корзину, мой вариант, идея как у Iska.
В скрипте надо прописать имя исходного файла. Можно сделать как у Iska, чтобы не прописывать.
В книге должен быть один исходный лист. С вариантом Iska по времени не сравнивал Код:
InXls = "Z:\Box_In\реальные данные исходный лист.xlsx" 'имя исходного Excel-файла |
Цитата:
megaloman, Ваш вариант тоже посмотрю. Чем больше вариантов, тем быстрее в сравнении освою VBA . |
Цитата:
Ну, давайте попробуем отобразить так (надеюсь, нас простят модераторы). Ниже код: Код:
Option Explicit |
Вложений: 1
Elizavetta, Слегка доработал свой скрипт: можно явно указать имя файла в скрипте, а можно в проводнике на скрипт или его значок затягивать обрабатываемый файл. На всякий случай заархивированный файл со скриптом прилагаю.
Вариант Iska работает в 5-10 раз быстрее. |
megaloman, ну, идея-то с фильтрацией:
Цитата:
Цитата:
Я постоянно жалею, что, наряду с методами Union() и Intersect(), нет какого-нибудь исключающего, «вычетающего» метода — какого-нибудь .InterExclude(), исключающего часть диапазона. Очень не хватает. Самописный код, реализующий подобный функционал, конечно, работает, но уж очень медленно. |
Iska, А я пошел у Вас на поводу, и отталкивался от сортировки. :) Думаю, какой вариант не используй, время вполне приемлемо.
|
Цитата:
|
Вложений: 2
Iska, Elizavetta, Мне кажется, мы занимаемся не тем: откуда в Excel попадают данные? Вероятно, выгружаются из какой-то базы. И что такое отчет, какова его форма. Надо иметь какой-то отчетный бланк с красивыми заголовочками и т д. Не вижу, чем полученный нашими скриптами отчет (то ли на основе создания листов, то ли на основе группировки) лучше простого применения фильтра.
Надо на этапе выгрузки в Excel формировать отчет, на нужных листах Excel, а не изобретать костыли. В качестве развлечения, наваял еще вариант не на основе создания листов, а на основе группировки данных.
Код:
InXls = "Z:\Box_In\реальные данные исходный лист.xlsx" 'имя исходного Excel-файла Скрипт (переименуйте txt в vbs) и картинку с результатом прикрепляю. |
Цитата:
|
Время: 15:40. |
Время: 15:40.
© OSzone.net 2001-