Excel 2007: Условное форматирование, так что каждая строка показывает низкие значения желтый, высокие значения красный
у меня есть таблица с около 300 строк. Каждая строка содержит около 15 столбцов, каждая ячейка содержит числовое значение. Каждая строка соответствует продукту.
Я хочу получить Excel для каждого продукта, чтобы выделить ячейки с самыми высокими числами красным и самыми низкими числами желтым цветом с градиентом для чисел между ними. Вот что происходит, если я выбираю строку (в частности, 15 ячеек в строке, которые содержат мои данные), а затем нажимаю Условное форматирование > цветовые шкалы > Красно-Желтая Цветовая Гамма.
однако, у меня есть 300 строк, и это займет слишком много времени, чтобы выбрать каждую строку по отдельности и установить Условное форматирование. С другой стороны, если я выбираю весь диапазон и применяю Условное форматирование, Excel вычисляет цвета на основе всего диапазона, когда на самом деле я хочу, чтобы они вычислялись по строкам. Например, возьмем следующий пример:
1 2 3
4 5 6
7 8 9
выход я хочу, используя y-желтый, o для оранжевый, R-красный, is:
Y O R
Y O R
Y O R
однако, если я выбираю весь диапазон и применяю Условное форматирование, я получаю:
Y Y Y
O O O
R R R
есть ли способ сделать это, не делая это по одной строке за раз?
3 ответов
вот макрос, который создает условный формат для каждой выделенной строки. Это делается путем копирования формата первой строки в каждую строку в выделенном фрагменте (по одной, а не полностью). Заменить B1: P1 со ссылкой на первую строку в таблице данных.
Sub NewCF()
Range("B1:P1").Copy
For Each r In Selection.Rows
r.PasteSpecial (xlPasteFormats)
Next r
Application.CutCopyMode = False
End Sub
чтобы использовать, выделите неформатированные строки в наборе данных (в моем случае, B2: P300) и запустите макрос. В приведенном ниже примере обратите внимание, что максимальное число в первых двух строки 5 и 15, соответственно; обе клетки темно-красный.
Я уверен, что есть более быстрое решение, чем это.
самый простой способ сделать это с помощью копирования/вставки постепенно. Во-первых, отформатируйте 1 строку так, как вы хотите. Затем скопируйте и пропустите форматирование только во вторую строку. Теперь скопируйте обе строки 1 и 2 и вставьте форматирование в строки 3 и 4. Промыть и повторять, копировать 4, последние 4, копию 8, вставка 8, 16 копировать, вставить 16. После того, как у вас есть приличное количество, как 16, вставьте его несколько раз, чтобы получить до 64 или 128. Затем вы можете скопировать их и вставить их форматирование, и вы экспоненциально покрываете больше территории, чем раньше.
Это не элегантно, и, по моему опыту, ресурсы, необходимые для условного форматирования eat row, начинают максимизировать около 2500 строк... но получить работу.
Я просто хочу, чтобы была логика, которая не создавала отдельный условный формат для каждой строки, захватывая ресурсы...
только что нашел это и другие примеры того, как сделать это через VBA, и это заставило меня задуматься, и я понял относительно быстрый и безболезненный способ сделать то же самое без необходимости знать или копировать какой-либо сценарий.
примените необходимое Условное форматирование к любой строке, а затем выделите всю строку. Затем щелкните правой кнопкой мыши в любом месте вдоль границы (мышь должна быть значок перемещения) и перетащите вниз к следующей строке. В контекстном меню, которое появляется выберите " Копировать сюда как Только Форматы". Теперь необходимо применить условный формат к обеим строкам по отдельности. Затем продолжайте делать это рекурсивно, за исключением того, что теперь вы можете выбрать и скопировать 2 или более строк за раз.
Это не сделка с одним выстрелом, как в приведенном выше коде, но она экспоненциально быстрее, чем выполнение одной строки за раз. Надеюсь, это поможет.
Другие вопросы conditional-formatting microsoft-excel microsoft-excel-2007