2

Excel позволяет легко форматировать цвета фона диапазона ячеек в диапазон / спектр цветов.  Я выбираю «Условное форматирование» → «Новое правило» → «Форматировать все ячейки на основе их значений» и «Формат стиля»: «2-цветная шкала». Это изменяет цвет фона (заливки) ячеек, основываясь на их значениях.  Например, это:

    Окно редактирования правила форматирования: низкий цвет = красный, высокий цвет = синий

установит цвет заливки ячеек, содержащих наименьшее значение в диапазоне, на красный, наивысшее значение на синий, а промежуточные значения на оттенки фуксии, розового, фиолетового и фиолетового:

выборочные данные (в диапазоне от 1 до 10), отформатированные как описано

Как я могу изменить цвет текста, используя те же условия?

3 ответа3

0

Я хотел бы предложить вам простой код VBA для условного форматирования данных TEXT в указанном диапазоне.

Это самый короткий метод, теперь, что вам нужно сделать, в поле «Диапазон данных» выбрать максимальный уровень появления текста, и вы можете отсортировать их, если это возможно.

Private Sub CommandButton1_Click()

lRow = Range("A" & Rows.Count).End(xlUp).Row
Set Mrng = Range("A120:A" & lRow)

For Each Cell In Mrng

    Select Case Cell.Value
        Case "Yes"
            cell_colour = 9
        Case "No"
            cell_colour = 5
        Case Else
            cell_colour = 3
        End Select

    Cell.Font.ColorIndex = cell_colour
Next

End Sub

Примечание: примените код индекса цвета, а также измените диапазон данных, как вам нужно.

Надеюсь, это поможет вам.

Обратите внимание, я проверял этот код, прежде чем опубликовать его здесь.Если кто-то отличается от этого, напишите ПРИЧИНУ перед тем, как ГОЛОСОВАТЬ.

0

Кажется, что нет родного способа сделать это из графического интерфейса. Тем не менее, это не сложно в VBA. Эта подпрограмма устанавливает цвет переднего плана / текста каждой ячейки в Target диапазоне на цвет, линейно интерполированный между цветом Lo цветом Hi , исходя из того, как значение в ячейке сравнивается с Lo_Val и Hi_Val:

Sub Colorize(Target As Range, Lo_Val, Hi_Val, Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B)
    Dim R, G, B As Long

    delta_val = Hi_Val - Lo_Val
    If (delta_val <= 0) Then
        MsgBox "Lo_Val and Hi_Val must not be the same, or in the wrong order."
        Exit Sub
    End If
    If (Application.Min(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) < 0 _
                Or Application.Max(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) > 255) Then
        MsgBox "Invalid color(s)."
        Exit Sub
    End If
    Delta_R = Hi_R - Lo_R
    Delta_G = Hi_G - Lo_G
    Delta_B = Hi_B - Lo_B
    For Each c In Target
        If (c < Lo_Val Or c > Hi_Val) Then
            c.Font.Color = 0        ' Black
            ' Alternatively, set values < Lo_Val to the Lo color
            ' and set values > Hi_Val to the Hi color.
            ' Or do nothing, leaving them with whatever color they have now.
        Else
            Diff_Val = c - Lo_Val
            ' We probably could just compute (c - Lo_Val) / delta_val
            ' at this point, but I'm not sure how well that would work
            ' with the rounding.
            R = Round(Lo_R + Delta_R * Diff_Val / delta_val)
            G = Round(Lo_G + Delta_G * Diff_Val / delta_val)
            B = Round(Lo_B + Delta_B * Diff_Val / delta_val)
            ' Use 256& to get a constant with value 256 and type Long.
            c.Font.Color = R + 256& * G + 256& * 256& * B
        End If
    Next c
End Sub

См. Как добавить VBA в MS Office? для общей информации о том, как войти и использовать это.

Я написал это как рутину с параметрами для гибкости.  AFAIK, невозможно вызвать подпрограмму VBA с параметрами из обычного пользовательского интерфейса Excel. Возможно, вы захотите определить мини-макрос (без параметров), который вызывает вышеуказанное с параметрами, которые вы хотите; например,

Sub Macro1()
'
' Macro1 Macro
'
    Call Colorize(Range("A1:J1"), 1, 10, 255, 0, 0, 0, 0, 255)
End Sub

который установит низкие цифры (от 1 и выше) до оттенков красного, а высокие цифры (от 10 и ниже) до оттенков синего.  Например, используя числа из вопроса, это дает нам

числа, отформатированные в разные цвета

(где я вручную увеличил размер шрифта, чтобы сделать цвета более заметными).

Затем вы можете вызвать это из «Разработчик» → «Код» → «Макросы» или связать его с кнопкой.  Или, если вы хотите, чтобы форматирование происходило автоматически при каждом изменении значения, вы можете использовать подпрограмму Worksheet_Change для вызова Colorize .  И, чтобы заставить это вести себя больше как условное форматирование, вы можете кодировать его, чтобы установить для Lo_Val и Hi_Val значения Min и Max, которые в данный момент находятся в диапазоне.

Заметки:

  • Длинная линия Dim R, G, B As Long кажется, не нужна.  Но я получаю ошибки переполнения, когда я использую обычный 256 вместо 256& .
  • Наука о том, как человеческий глаз и человеческий мозг воспринимают цвет, очень сложна.  Линейная интерполяция значений RGB, вероятно, не лучший алгоритм для создания градуированного диапазона / спектра цветов.
-1

Да, это очень возможно, чтобы сделать это, выполните следующие действия.

  1. Выберите диапазон данных.
  2. Нажмите Условное форматирование.
  3. Хит Новые правила.
  4. Найдите и выберите параметр «Форматировать только те ячейки, которые содержат»
  5. В Редактировать описание правила.
  6. Установите "Форматировать только ячейку с", "Значение ячейки и равно", чтобы поместить текст, например, восток, затем нажать кнопку "ФОРМАТ" и выбрать соответствующий цвет текста.

Обратите внимание, вам нужно повторить шаги с 1 по 6 для другого текста и цвета для того же диапазона данных.

Если возможно Сортируйте диапазон данных, чтобы текст был в группах, затем выберите и примените форматирование условия.

Надеюсь, это поможет вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .