
Вот пример 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
Используйте функцию вставки значений, чтобы вставлять только числа, в противном случае форматирование также будет вставлено.