Excel 2007: Умовне форматування, щоб у кожному рядку були низькі значення жовтого кольору, високі значення - червоного


14

У мене електронна таблиця із приблизно 300 рядками. Кожен рядок містить близько 15 стовпців, і кожна комірка містить числове значення. Кожен ряд відповідає продукту.

Я хочу отримати Excel для кожного продукту, щоб виділити клітинки з найвищими числами червоного кольору та найнижчими числами жовтого кольору, з градієнтом чисел між ними. Це відбувається, якщо я виберіть рядок (конкретно, 15 комірок у рядку, які містять мої дані), а потім натисніть Умовне форматування> Кольорові шкали> Червоно-жовта кольорова шкала.

Однак у мене є 300 рядків, і для вибору кожного рядка окремо та встановлення умовного форматування знадобиться занадто багато часу. З іншого боку, якщо я вибираю весь діапазон і застосовую умовне форматування, Excel розраховує кольори на основі всього діапазону, коли насправді я хочу, щоб вони обчислювались по черзі. Наприклад, візьміть ці вибіркові дані:

1 2 3
4 5 6
7 8 9

Я хочу, використовуючи Y для жовтого, O для помаранчевого, R для червоного, такий:

Y O R
Y O R
Y O R

Однак якщо я виберу весь діапазон і застосую умовне форматування, я отримаю:

Y Y Y
O O O
R R R

Чи є спосіб досягти цього, не роблячи це по одному ряду?


@wizlog: Правильно. Найвище значення в ряді має бути червоним, найнижче значення в цьому рядку - жовтим, а інші значення повинні бути десь посередині (чим ближче до найвищого значення, тим червоніше).
Майкл Паві

Мені подобається це запитання ... Я побачу, чи зможу я знайти відповідь ... Проблемно буде кілька годин, перш ніж я можу допомогти знову, сподіваюся, інші члени SuperUser знайдуть вам відповідь вчасно через ..
wizlog

Мені подобається і це питання. Але я не бачу іншого способу підходу до цього, крім використання макросу. Я сподіваюся, що хтось доводить мене неправильно.
Еллеса

Відповіді:


15

Ось макрос, який створює умовний формат для кожного рядка у вашому виділенні. Це робиться, копіюючи формат першого рядка у рядок EACH у виділеному порядку (один за одним, а не взагалі). Замініть 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
Дякую, це спрацювало чудово. Це також чудовий приклад цінності просити про допомогу, коли не впевнений ... Мене спонукала ідея використання макросу, оскільки я припускав, що мені потрібно буде навчитися встановлювати умовне форматування з нуля. Отримати макрос просто для копіювання наявного форматування набагато хитріше :)
Майкл Паві

@MichaelPavey Радий, що можу допомогти! І ласкаво просимо до Суперусера! :)
Еллеса

1
+ 1. Якщо когось цікавить, я взяв цю концепцію далі у своєму блозі: yoursumbuddy.com/conditional-formatting-per-row-color-scales
Doug Glancy

Смішно, що така річ не вбудована в Excel як особливість. Чи не так вже рідко хочеться порівнювати рядки таким чином?
Олексій

5

Найпростіший спосіб досягти цього - скопіювати та вставляти поступово. Спочатку відформатуйте 1 рядок так, як вам потрібно. Потім скопіюйте та вставте форматування лише в ТОЛЬКО другий рядок. Тепер скопіюйте ДІВ рядків 1 і 2 та вставте форматування у рядки 3 та 4. Промийте та повторіть, скопіюйте 4, минулі 4, скопіюйте 8, вставте 8, скопіюйте 16, вставте 16. Після того, як ви отримаєте пристойну суму, як 16, вставте кілька разів, щоб отримати до 64 або 128. Потім ви можете скопіювати їх і вставити їх форматування, і ви експоненціально охоплюєте більше території, ніж раніше.

Це не елегантно, і, на мій досвід, ресурси, необхідні для умовного форматування рядка з їжею, починають отримувати максимум близько 2500 рядків ... але це виконає роботу.

Мені просто хотілося, щоб були логіки, які не створювали окремий умовний формат для кожного ряду, зависаючи ресурси ...


Я думаю, що ОП сказала: "Однак у мене є 300 рядків, і це займе занадто багато часу, щоб вибрати кожен рядок окремо і встановити умовне форматування". у питанні
Прасанна

@Poultron, дякую! Щоб додати до цього: Використовуючи Ctrl / Cmd + Shift + Вгору / Вправо, ви можете легко вибрати всі попередні рядки та стовпці, тому вам не потрібно рахувати попередні рядки. Тоді, коли ви будете готові вставити, просто розташуйте курсор у першій комірці нижче вже відформатованих рядків та лише спеціального формату вставки, він охопить стільки рядків, скільки було скопійовано. Ctrl / Cmd + Shift + V також запам'ятає останню спеціальну пасту, яку ви хочете використовувати, тому весь процес проходить досить швидко. Просто використали його на двох електронних таблицях по 600 рядків у кожній.
Оскар Аустегард

Я зробив це на столі зі 100 рядками, і це прекрасно працювало. Взяли лише 7 ітерацій «Художника формату».
mskfisher

0

Щойно я знайшов це та інші приклади, як це зробити за допомогою VBA, і це змусило мене задуматися, і я зрозумів відносно швидкий і безболісний спосіб зробити те ж саме, не знаючи і не копіюючи жодного сценарію.

Застосуйте потрібне умовне форматування до потрібного рядка, а потім виділіть весь рядок. Далі клацніть правою кнопкою миші будь-де вздовж кордону (миша повинна бути значком Переміщення) та перетягніть вниз до наступного ряду. У контекстному меню, що з'являється, виберіть "Копіювати сюди як лише формати". Тепер ви повинні мати свій умовний формат, застосований до обох рядків окремо. Потім продовжуйте робити це рекурсивно, за винятком того, що тепер ви можете одночасно вибрати та скопіювати 2 та більше рядків.

Це не одне зйомка, як вищевказаний код, але це експоненціально швидше, ніж робити по одному рядку за раз. Сподіваюсь, це допомагає.


0

Ви також можете застосувати форматування умови до одного рядка. Виділіть рядок ще раз і двічі клацніть на «Форматор художника», щоб заблокувати його. Використовуйте клавішу зі стрілкою вниз, щоб застосувати умову до інших рядків.

Для моєї компанії зазвичай блокується макрос в excel, тому це працює для мене. сподіваюсь, що і вам це допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.