В следующей таблице представлено значение, с которым я работаю в Microsoft Excel.
+---+----+-----+---------+-----+
| | A | B | C | D |
+---+----+-----+---------+-----+
| 1 | | Min | Current | Max |
| 2 | LF | 8 | 13 | 20 |
+---+----+-----+---------+-----+
Мне бы хотелось, чтобы значение, расположенное в текущем столбце, меняло цвет в зависимости от того, является оно низким, средним или высоким по сравнению с минимальным и максимально возможным значением.
Сначала я определяю разницу между максимальным и минимальным значениями; в этом случае d3 - a3 = 12.
Оттуда первая 1/3, или 33% от значения 12, является «низким» диапазоном.
Мне удалось использовать «условное форматирование» в Excel и сгенерировать следующую формулу в разделе «Новое правило» → «Использовать формулу, чтобы определить, какие ячейки форматировать»:
1-е правило для «низких значений», ячейка которых будет заполнена определенным цветом; они варьируются от 8 до 12:
=$C2<ROUNDUP(($D2-$B2)*0.33, 0)+$B2
Второе добавленное правило для «высоких значений», то есть в диапазоне 17-20:
=$C2>$D2-ROUNDUP(($D2-$B2)*0.33, 0)
3-е добавлено, для «средних значений», которые не относятся ни к высоким, ни к средним:
=OR($C2>=ROUNDUP(($D2-$B2)*0.33, 0)+$B2, $C2<=$D2-ROUNDUP(($D2-$B2)*0.33, 0))
Я пошел к 3 другим ячейкам и установил каждую из этих ячеек на цвет, которым я хочу заполнить диапазоны «низкий», «средний» и «высокий».
Я хотел бы, чтобы конфигурация «условного форматирования» использовала цвета, назначенные одной из этих 3 соответствующих ячеек, на случай, если в будущем я решу использовать другие цвета; этот переход будет происходить быстрее, чем переходить к каждой отдельной ячейке для изменения цвета.
источник
Ответы:
Если вы можете использовать VBA, у меня есть решение.
Это проверяет каждую ячейку со значением в столбце C на соответствие правилам. Какое бы правило не совпадало, оно копирует цвет фона из контрольной ячейки в ячейку, которую проверяет. Это будет происходить каждый раз, когда значение добавляется или удаляется из рабочей книги.
источник
Я придумал решение, которое использовало как VBA, так и обычный интерфейс Excel.
У меня была ячейка с функцией = SUM, которая помечала все отдельные ячейки, формат которых я хотел бы обновить.
Ячейка (в данном случае C2), формат которой я хотел имитировать, вызывалась со следующим:
Оттуда я использовал алгоритм макросов VBA, который извлекал содержимое из ячейки, A30, с набором различных местоположений ячейки, к которым я хотел применить условное форматирование, в данном случае A30, как строку.
А затем использовал соответствующую функцию подстроки & replace, чтобы иметь ее в правильных макетах (изменить + на запятую (,) и удалить скобки & = SUM) для следующей функции PasteSpecial, которая использует «Format Painter»:
Примером переменной cellLocations в соответствующем макете является:
Запятая нужна как разделитель / разделитель.
Любое лучшее или более простое решение будет оценено.
источник