Здравствуйте, уважаемые форумчане. Имеется в работе таблица (Excel 2010) с данными по отгрузке продукции покупателям. Таблица ведется ежедневно нарастающим итогом, данные собираются за два года (текущий и предыдущий). В данный момент в ней 7000 строк и 32 покупателя. Для каждого покупателя должна быть выбрана своя заливка цветом (это обязательное требование). Я задала правила условного форматирования, все работает, но есть одна проблема: при добавлении в отчет новых строк правила условного форматирования начинают как-то "самопроизвольно размножаться" и при этом формулы почему-то меняются. Иногда это не влияет на конечный результат, а иногда влияет - чаще всего не закрашиваются ячейки с данными об оплате. Приходится каждый раз заходить в правила форматирования для нужного диапазона и вручную что-то исправлять. Вопрос - можно ли каким-то образом сделать, чтобы правила условного форматирования распространялись бы сразу на весь динамический диапазон (который будет постоянно увеличиваться вниз)? В инете искала ответ на этот вопрос - в одном примере было предложено использовать формулу смещения, но там же был ответ, что это не работает. Еще нашла похожий вопрос - http://www.excelworld.ru/forum/2-17381-1 , но я с макросами совершенно не дружу. Пыталась вписать в УФ именованные диапазоны - при нажатии "Применить" все сбрасывается к обычным диапазонам. Пыталась сослаться целиком на столбцы, но при добавлении новых строк все равно появляются новые правила УФ. Можно ли как-то решить этот вопрос? Или хотя бы как добавлять новые строки, чтобы не происходило нарушения в формулах. Прописывать правила УФ сразу на 20 тыс. строк не хочется, тем более что под таблицей имеются ячейки со сводной информацией (в примере их нет). Прикрепляю файл с таблицей и скрины правил УФ - на рис.1 правильные формулы, на рис.2 и 3 формулы, изменившиеся после добавления новых строк в таблицу.
Извините, я подумала, что ограничение все же действует для каждого файла в отдельности... Получается я смогу только один файл здесь показать и все.... Жаль, хотелось большей наглядности. Или можно добавить рисунки каждый отдельным сообщением? Они же по отдельности меньше 100 Кб.
Ссылка на рис. с правильными формулами УФ - http://my-files.ru/3nneux Ссылки на рис. с формулами, изменившимися после добавления новых строк - http://my-files.ru/5w8xlv и http://my-files.ru/km0x8n yozhik, спасибо, скачала Ваш файл, попробовала - работает. Макрос посмотрела (хотя ничего в нем и не поняла). Но еще момент - надо было конечно отдельно это указать, но я что-то не сообразила, думала будет на рисунках видно, что нужны такие формулы - ячейки N:O и P:Q должны заливаться соответствующим цветом только в том случае, если в них есть данные (об оплате). Если они пустые, то должны оставаться незакрашенными. Я это прописывала отдельно с помощью функции ЕПУСТО. Можно это как-то добавить в макрос?
в них данные появляются после выбора покупателя и вносятся вручную? или данные уже могут быть в ячейках и при смене покупателя в строке должны (или не должны) очищаться?
Данные вносятся после выбора покупателя и продукции, вручную. Смены покупателя в строке не происходит - вначале "фиксируются" данные об отгрузке продукции (кому, что, №, дата, кол-во и т.д.), а затем, по мере поступления оплаты заполняются столбцы N:O и P:Q (сделаны две пары столбцов на случай частичной оплаты, чтобы было видно, какого числа поступила первая часть платежа и какого оставшаяся). Т.е. по одной строке могут быть заполнены или ячейки N:O, или P:Q или и те и другие вместе.
Да, Вы конечно правы - "никогда не говори никогда"))). Помучила Ваш файл, попробовала добавить нового покупателя с новой продукцией - все прекрасно работает. Осталось как-то запихнуть этот макрос в свою реальную таблицу и посмотреть что получится.))) Большое спасибо, как говорится, снимаю шляпу - мне эти макросы никогда не освоить наверное... Это какой-то другой уровень мышления. Пошла пробовать, хоть бы получилось....
Вам надо будет сначала удалить правила условного форматирования (соответственно, пропадет вся предыдущая заливка 7-ми тысяч строк) в помощь макрос удаления УФ и перекрашивания строк (предварительно закрасьте покупателей на листе products)
Код
Sub del_f()
With Range("C4").CurrentRegion
If .FormatConditions.Count > 0 Then .FormatConditions.Delete
End With
Dim rng As Range
For i = 4 To 30 '30 - номер строки с последней записью по покупателям, напишите свой номер строки
Set rng = Worksheets("products").Columns(1).Find(what:=Cells(i, 5).Value)
If Not rng Is Nothing Then
Range("C" & i).Resize(, 15).Interior.ColorIndex = rng.Interior.ColorIndex
For Each cl In Range("N" & i).Resize(, 4)
If cl.Value = "" Then cl.Interior.ColorIndex = 0
Next
End If
Next
End Sub
Это все сделала, удалила просто через меню "Условное форматирование - Удалить правила со всего листа", все естественно "обесцветилось". Покупатели у меня очень удачно закрашены именно на нужном листе (так сказать для образца заливки). Теперь читаю в инете про перенос макроса из одной книги в другую, но пока что-то не вижу, где этот модуль, про который там написано и который надо перенести....
копируете макрос целиком, в нужной книге на нужном листе правым мышом кликаете на ярлычке листа и выбираете "исходный текст" (вроде..View Code в анг яз версии) вставляете скопированный макрос. Всё.
Так просто, а я в какие-то дебри полезла... Сделала. Работает при заполнении новой строки. А как его заставить сработать на тех строках, что есть? Файл закрывала/открывала, имеющиеся строки все равно без заливки...
посмотрите сообщение #13. В нем макрос. Скопируйте его в свою книгу For i = 4 To 30 - (6 строка кода) - здесь поставьте номер последней заполненной строки с покупателем вместо 30 ( 7000 ?)
Виновата, сразу не вчиталась... Скопировала, добавила, № строки поставила - ничего не меняется. Завтра попробую сначала на примере сделать, может я все-таки что-то не так копирую или вставляю, без файла не понятно. Спасибо еще раз за помощь, надеюсь все-таки все в итоге получится.
подозрение у меня, что макрос Вы скопировали, но не запустили..) Предыдущий макрос срабатывал на изменения в ячейках. Этот надо запустить принудительно. Нажимаете Alt + F8, выбираете макрос с названием "del_f", нажимаете Enter
Сейчас "перебирала" в новой строке всех по очереди покупателей - часть моей используемой заливки видимо не входит в палитру макроса, цвета выдает совсем другие по некоторым покупателям, а на одного (заливка была выбрана красным цветом) вообще заругался, что ошибка. Поменяла для него красный цвет на другой, ошибка исчезла. Но это уже детали, это можно подкорректировать.
ДААААААААААА!!!!!!!!!!!!!! Заработало!!!!!!!!!!!! (Ну я же честно в начале писала, что в макросах ноль....) Спасибо!!!! Побежала домой, завтра буду играться дальше. Ура, ура, ура!!!
Здравствуйте, уважаемый yozhik! Еще раз хочу сказать большое спасибо за то, что Вы потратили столько времени за решение моей задачи. Таблицу доделала, все нормально, можно сегодня работать. И еще маленький вопрос вдогонку - а макрос работает только с палитрой из 56 цветов? Никак нельзя добавить цвета хотя бы из основной палитры Excel? А то слишком темные и яркие цвета плохо "читаются". Я все, что смогла найти и понять - это перечень цветов этой самой ограниченной палитры и в соответствии с ним поменяла часть своей заливки. Но так не очень нравится.