|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2013, 02:33 | #1 |
Регистрация: 04.05.2013
Сообщений: 3
|
Форматирование таблицы на основании данных двух первых столбцов
Доброй ночи уважаемые гуру VBA. Мне очень нужна ваша помощь. Вот ссылочка на книгу http://rghost.ru/private/45741857/e7...6089b7af0341d1
Это прайс. Нужен макрос для автоматического условного форматирования. Там данные разбиты на столбцы. В первом столбце название программы и вниз идёт много одинаковых строк, потом появляется другая программа и так далее. Во втором столбце данные в столбике повторяются, но уже на меньшую протяжённость - там указывается версия ПО и тип поставки - лицензия, обновление и т.д. Мне нужно, чтобы макрос опеределял в первом столбце (А) название программы создавал над первым встречающимся названием программы новую строку и копировал название этой программы в столбец D, затем в рамках повторяющихся данных первого столбца проверялся на повторы второй столбец (B) и перед первой версией нового ПО тоже создавалась новая строка и в тот же столбик (D) копировались данные теперь уже из второго столбца и так далее по списку. Желательно, чтобы всё это происходило уже на новом листе, либо в новой книге. Кроме этого после столбца D создаётся новый столбец и в него при помощи сцепки через пробел сцепляется столбец B (Версия ПО) и столбец E (Вид лицензии) с листа "Было так". Понимаю, что объясняю довольно запутанно, поэтому и приложил книгу в которой всего 2 листа - их названия красноречиво говорят за себя. На листе как надо сделал около 100 строк, просто для примера. Нужен макрос, который сможет обработать таким методом и 15000 строк. Если же при этом будет такое же форматирование и цвета будут, как на финальном листе - это будет просто супер. Я там цветами повыделял для наглядности, но оно так лучше воспринимается. Буду вам очень благодарен, если вы сможете помочь. |
05.05.2013, 21:36 | #2 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Код написан для книги из сообщения #1.
Код обрабатывает первый лист. Нужно скопировать лист "Было так" в начало книги и запустить макрос. Тестируйте код на тренировочной книге, а не на рабочей книге, чтобы не испортить данные. Код:
|
10.05.2013, 00:06 | #3 |
Регистрация: 04.05.2013
Сообщений: 3
|
Спасибо)) всё отлично работает)
Правда есть небольшой момент... если в таблице больше столбцов, то она не закрашивается... можно сделать, чтоб в макросе была проверка не только проверка последнего значения в столбце, но и количества столбцов, в которых есть данные? Ещё, если у вас есть время и возможность не могли бы вы добавить в существующий макрос ещё один этап перетасовки данных с созданием дополнительных строк, и ещё один отдельный макрос для этого же файла, но уже с другой сортировкой (этот будет небольшим), к сожалению моих познаний просто недостаточно, чтобы написать это самому... да и когда то сообщение писал - не думал, что такое вообще осуществимо. Исходим из книги в первом примере... нужна после создания строчек на основании данных из первого столбца (А) В общем идея такова... в существующий макрос после создания основных категорий по столбцу А нужно чтобы потом макрос смотрел в столбец J, тот, который AE/COM. Мне надо, чтобы в пределах появившихся пустых строк (в пределах одной определённой программы) происходила сортировка содержимого строк и тоже создавались дополнительные строчки. В этом столбике встречаются следующие значения ячеек - AcademicEdition, "Academic;AcademicEdition"(в кавычках одно слово, но они и раздельно встречаются), Academic - при всех этих значениях строк должна создаваться сверху строка, а в столбце (D), появляться надпись - "Для учебных заведений"... цвет появившейся строки - 9958071, а в столбце (E) в пределах значений столбца J одной программы, указанных выше была заливка цветом 14416371. Значения столбца J: Com, Retail, Non-specific - создаётся строка, закрашенная 13558173, в столбце (D) появилась надпись - "Для коммерческих организаций", а данные, которые соответствуют этому значению в (E) были залиты цветом 15726046, ещё попадаются значения Government - в этом случае новая строка окрашивается в 15977566, надпись в столбце (D) гласила "Для государственных учреждений", а заливка данных в столбике (Е) была 16643549, если будут попадаться какие-то другие значения, например n/a, то создаётся строка красным цветом с надписью "Что-то непонятное", а ячейки закрашивались 11498482. Идеальным вариантом в этом случае было бы появляющееся окно, предлагающее внести значения что чему соответствует в определенном прайсе, Порядок сортировки - Сначала должны идти значения соответствующие "Для коммерческих организаций", потом для учебных заведений, потом для госорганизаций, а потом всё непонятное... если, например в столбике только для ком организаций и для учебных, то строки должны создаваться только для них, а остальные пропускаються... ну а дальше в пределах разрывов, созданных появившимися пустыми строками идёт сортировка во втором столбце от А до Я, а потом создаются категории из столбца (B) то есть как и раньше в первоначальном макросе. Последний раз редактировалось blinkheart; 10.05.2013 в 02:40. |
10.05.2013, 03:31 | #4 |
Регистрация: 04.05.2013
Сообщений: 3
|
А второй макрос нужен для того, чтобы запустить его, после отработавшего первого, Он в созданных подкатегориях опять пределом будут незаполненные строки в столбце (H) - Full/Upgrade. В этом столбце могут быть такие значения - Full, Standard, License, Lic, Programs говорят, что это "Поставка" цвет строки - любой, но желательно, чтоб раньше он не повторялся, а ячейки с данными в столбце Е могут заливаться любым из цветов для столбца Е, что указывал раньше. Значения Upg, Product Upgrade, Version Upgrade, Upgrade - говорят, что это "Обновление" - строку закрашиваем любым цветом, который ещё не использовался, а в столбце (Е) можно использовать заливку для ячеек, что расписывал в предыдущем сообщении. Значения Software Assurance, "Upgrade/Software Assurance Pack", "License/Software Assurance Pack" (кавычки для выделения одного слова) - "Поддержка" - цвет строки на усмотрение, но желательно уникальный, заливка ячеек в столбце Е как и раньше берётся на выбор из предыдущего сообщения, но, чтоб в в пределах этого макроса без повторов. Значения Subscription и Monthly, "Subscriptions-VolumeLicense" - соответствуют значению в столбце D "Подписка", цвет строки - любой, заливка ячеек в Е - любая из предложенных цветов для заливки из предыдущего сообщения, но без повторов. Ещё может быть значение n/a - тут строка с каким-нибудь вырвиглазным цветом, можно красным и именем в D - "Непонятки", заливка ячеек данных тоже красная. Возможны ситуации, когда из всех этих вариантов будет только 1-2 любых... Как правило это обновление - поставка, тогда должны появляться только они. Было бы хорошим вариантом, если появится форма и предложит внести значения и что чему будет соответствовать. Вся эта чехарда с цветами нужна для того, чтобы иметь возможность выделять и вносить правки в определённый диапазон данных с помощью надстройки для выделения ячеек определённого цвета.
Буду очень признателен, если кто-то сможет такое сделать))) Последний раз редактировалось blinkheart; 10.05.2013 в 03:43. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение и сортировака двух и более столбцов данных (макрос) | gladius13 | Microsoft Office Excel | 14 | 27.09.2012 20:15 |
Форматирование данных таблицы | iami | Microsoft Office Excel | 12 | 07.07.2011 20:08 |
Заполнение одной таблицы на основании других | Д'якон | Помощь студентам | 5 | 27.01.2010 19:30 |
авт. перенос данных из нескольких столбцов одной таблицы в один столбец другой таблицы | A_ALL | Microsoft Office Access | 7 | 24.08.2009 21:13 |