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

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

Вот пример 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 такие же, как в первой матрице)

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

решение1

Вы всегда можете добавить 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

решение2

  • Предположение: Вы хотите использовать условное форматирование (и не 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 в качестве заголовков или чего-то в этом роде и просто храните каждое число в отдельной ячейке.

решение3

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

Связанный контент