|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.09.2012, 00:40 | #1 |
Пользователь
Регистрация: 25.08.2012
Сообщений: 11
|
Окраска строк по условию (нестандартная задача)
Доброго времени суток!
Облазил интернет в поисках нужного мне решения, но нужного так и не нашел или сейчас не соображаю как это сделать. Образовываться VBA начал сравнительно недавно, так что пока сам свою проблему решить не могу... Помогите пожалуйста написать код для такого примера: Есть таблица-отчет по отгрузке продукции такого плана: Заказчик ! Объект ! № ! Дата ! Продукция! Кол-во ! Отгружено ! Осталось А вниз уже идут записи о заявках и отгрузке по заказам. Так вот, начиная со следующей строки необходимо чтобы записи в которых столбцы 1, 2, 3, 4 одинаковы красились попеременно то в белый (без заливки), то в серый цвет, а сверху и снизу обрамлялись линией определенного типа (скажем если по одному заказу есть несколько позиций, то в середине линии между строками - тонкие, а сам контур (сверху и снизу), окружающий позиции - толстый). Примечание: об одном и том же заказе свидетельствует тождество данных в строках столбцов 1, 2, 3, 4 текущей и следующей записи. Условное форматирование - не подходит, потому что: 1. Я получил требуемый результат, воспользовавшись вспомагательным столбцом и формулой, но формулу необходимо постоянно размножать, а при добавлении новых строк - правила условного форматирования дублируються, разбиваются, сьезжают, короче - не то! 2. Пользуясь тем же самым условным форматированием при отборе записей фильтром, форматирование может накладываться - может идти две белых полоски из разных заказов одна за одной и пр. (это случается потому, что условное форматирование берет форматирует как скрытые, так и видимые ячейки); 3. Желательно написать макрос, для того, чтобы он уже после фильтрации по определенным критериям красил или не красил записи отвечающие нужному условию; 4. Если можно - нужно чтобы макрос обрабатывал некоторый специфический диапазон (чтобы не проверял всю таблицу, а лишь количество видимых записей) - если честно не знаю как задать подсчет значений, которые были отображены после применения фильтра), ну как бы, чтобы экономить время и память. Спасибо за внимание Последний раз редактировалось Piano_Dreamer; 19.09.2012 в 00:47. |
19.09.2012, 01:22 | #2 | |||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Прикрепите к сообщению файл Excel в архиве, для начала Цитата:
Цитата:
|
|||
20.09.2012, 01:11 | #3 |
Пользователь
Регистрация: 25.08.2012
Сообщений: 11
|
Таблица
Все таки почти добился я желаемого результата, но к сожалению, при использовании инструмента "Условное форматирование" в одном случае при вставке новых строк, инструмент делит правила, а в другом все нормально.
В общем, подробнее расписано все в подписях в приложенном файле. Спасибо за уделенное время, всего доброго! P.S.: код прописанный в файле еще находиться в доработке и основан на только недавно полученных знаниях из интернета и является моими первыми попытками в написании процедур VBA... Так что, если что, буду рад конструктивной критике! =) Последний раз редактировалось Piano_Dreamer; 20.09.2012 в 01:16. |
20.09.2012, 01:52 | #4 |
Пользователь
Регистрация: 25.03.2011
Сообщений: 18
|
Ух не уследил за мыслею
|
26.09.2012, 22:40 | #5 |
Пользователь
Регистрация: 25.08.2012
Сообщений: 11
|
Мне нужно покрасить строки по условию совпадения некоторых клеток в строке текущей и следующей записи. При чем если следующая запись по нескольким значением клеток совпадает с текущей то их окрасить в один цвет (скажем серый) и сделать обрамление совпадающих записей толстой рамкой, а если следующая запись отличается - то она должна быть уже белого цвета (если есть далее записи с одинаковыми клетками то и их в тот же цвет, если нету - то обратно в серый).
Короче как это сделано в файле, только чтобы при скрытии или сортировке для поочередно идущих строк с совпадающими клетками обрамить их толстой рамкой (только горизонтальные) а в середине более тонкие линии (только горизонтальные) и заливку сделать одного цвета (серого), а если след. запись отличается теми же клетками (но не всеми, а только первыми несколькими), рамки так же само, только окрасить в белый к примеру (или оставить без заливки). В общем, чтобы заливка шла попеременно если первые несколько клеток текущей записи не совпадают со следующей, как бы я их не сортировал и не скрывал, чтоб следующей считалась строка, которая видима и идет сразу под текущей. Внутри окрашеного диапазона сделать рамку из тонких горизонтальных линий, а снаружи - из толстых. Преодолеваю трудности в пользовании, использую условное форматирование раскрашивая записи по значениям вспомогательного столбца, но когда скрываю или сортирую записи - их красит не всегда верно. Так я пока и не могу найти решение... Последний раз редактировалось Piano_Dreamer; 26.09.2012 в 22:46. |
27.09.2012, 01:04 | #6 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Не люблю я с цветами и сетками играться.
Пример покраски работает Код:
Анализ,обработка данных Недорого
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавление строк по условию. | Shkoda | Microsoft Office Excel | 1 | 02.12.2011 19:28 |
Нестандартная задача(atantion please) | sem_1989 | HTML и CSS | 3 | 12.07.2011 21:11 |
нестандартная задача в паскале | vadek13 | Помощь студентам | 5 | 22.05.2009 22:49 |
Нестандартная задача с цветами ячеек ДБГрид! | Abbatik | БД в Delphi | 2 | 02.02.2008 18:02 |