Исправление цвета ячеек в Excel при изменении значений этих ячеек

412
Jacob

Вот пример 4 ячеек в моей книге.

26 99 2 1 

Рабочая книга окрашена в соответствии с правилами 100 = красный 0 = желтый, где элементы ближе к 0 более желтые, а элементы ближе к 100 более красные (это определяется правилом условного форматирования, которое назначает цвета в зависимости от значения).

В этом примере 99 будет очень красным, 1 и 2 будут очень желтыми, а 26 будет иметь оранжевый оттенок.

Я хочу, чтобы цвет ячеек оставался неизменным, но меняю значения в ячейках. В этом примере я хочу, чтобы они были

E=0.0,Q=26 E=0.0,Q=99 E=2.10e-11,Q=2 E=1.02e-08,Q=1 

(Обратите внимание, что значения в правой части q такие же, как в первой матрице)

Из-за правила условного форматирования мои цвета исчезают, когда я вставляю в них новые значения.

2

3 ответа на вопрос

2
Jason Clement

Вы всегда можете добавить 100 условий форматирования на основе значения после Q=in E=0.0,Q=99. Вот макрос, который будет делать это для всех выбранных вами ячеек, сравнивая каждое пустое значение ячейки с 1 до 100 напрямую или сравнивая его со значением после, Q=если первое сравнение приводит к ошибке.

Вы можете удалить макрос после запуска, чтобы вам не нужно было сохранять файл как XLSM. Раскомментируйте Selection.FormatConditions.Deleteстроку, удалив апостроф, если вы также хотите удалить текущие условия формата.

Предполагается, что ваше число всегда является целым числом от 1 до 100 (либо в качестве пустого значения ячейки, либо после Q=). Это не будет работать для десятичных значений.

Sub FormatMe() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'Selection.FormatConditions.Delete Dim addr As String addr = Replace(Selection.Cells(1).Address, "$", "") For i = 1 To 100 With Selection.FormatConditions.Add(xlExpression, Formula1:= _ "=OR(" & addr & " = " & i & ", IFERROR(RIGHT(" & addr & _ ", LEN(" & addr & ") - FIND(""Q"", " & addr & ", 2) - 1) = """ & i & """, FALSE))") .Interior.Color = RGB(255, 255 - Int(i / 100 * 255), 0) End With Next Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub 
Хотя это не «исправляет» (замораживает) последний известный (текущий) условный цвет, я думаю, что это действительно лучшее решение, чем попытка заморозить последний известный цвет. Arjan 6 лет назад 0
0
Guido Hoogslag
  • Предположение : вы хотите использовать условное форматирование (а не VBA)
  • Предположение : ячейка, которую вы хотите закрасить, содержит «сложные» значения, такие как «E = 0.0, Q = 26»

  • Ответ : выберите один - условное форматирование Excel недостаточно умно, чтобы «прочитать» значение «E = 0.0, Q = 26» и найти число 26.

    • Использование вашей собственной формулы форматирования может сработать, но это не может применить градиент, так как он использует только один цвет на условие, иначе говоря, «если число равно 29, это делает его точным цветом». (Насколько я знаю - поправьте меня пожалуйста)
    • Excel может автоматически извлечь число 26 из вашей ячейки, и эту (соседнюю) ячейку можно отформатировать (используя ячейку F4 =NUMBERVALUE(RIGHT(F4,LEN(F4)-FIND(",",F4)-2)))
  • Мое предложение представить ваши данные по-другому, используйте E и Q в качестве заголовков или что-то в этом роде и просто храните каждое число в отдельной ячейке.

-1
gns100

Используйте значения вставки, чтобы вставлялись только цифры, иначе форматирование также будет вставлено.

Он по-прежнему меняет цвет, потому что ячейки окрашены по правилу форматирования. Если я вручную изменю одно из этих значений с 1 на 99, значение изменится с желтого на красный Jacob 6 лет назад 0
@Jacob Вот что делает условное форматирование. Если вы не хотите, чтобы цвет ячейки изменялся, удалите условный формат и установите заливку ячейки вручную, чтобы она не изменялась со значением. teylyn 6 лет назад 0

Похожие вопросы