Excel: использовать формулу в формате ячейки

Excel: использовать формулу в формате ячейки

Есть ли способ использовать формулу в качестве формата ячейки?

AFAIK, условное форматирование допускает только статическое форматирование, применяемое на основе некоторого условия. Я хочу, чтобы сам формат был динамическим. Например, я хочу установить цвет ячейки в соответствии с ее содержимым (если значение ячейки «красный», то использовать красный цвет в качестве цвета), не устанавливая правило условного форматирования для каждого цвета.

Я знаю, что это можно сделать с помощью макроса, но я не хочу запускать макрос после каждого изменения ячейки.

решение1

Я не думаю, что для этого существует какая-то формула, и нет никакой опции в менеджере условного форматирования.

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

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

'Do nothing if more than one cell is updated, or if cell contents are deleted
If Target.Cells.Count > 1 Or IsEmpty(Target) Then
    Exit Sub
End If

Select Case LCase(Target.Value)
    Case "red"
        newcolor = RGB(255, 0, 0)
    Case "blue"
        newcolor = RGB(0, 0, 255)
    Case "chartreuse"
        newcolor = RGB(0, 255, 0)
    Case "lavender"
        newcolor = RGB(224, 176, 255)
    Case Else
        newcolor = Target.Interior.Color
End Select

Target.Interior.Color = newcolor
Application.EnableEvents = True

End Sub

Использовать:

  1. Нажмите Alt+ F11.
  2. В обозревателе проектов (левая панель) дважды щелкните по рабочему листу, к которому вы хотите применить форматирование.
  3. Вставьте код в окно.

Подпрограмма будет выполнена автоматически:

  • Когда вы вводите «красный», «синий», «зеленовато-желтый» или «лавандовый» выше влюбойячейка в этом конкретном рабочем листе
  • Когда формула влюбойячейка возвращает либо «красный», либо «синий», либо «зеленовато-желтый» или «лавандовый»

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

Вы также можете ограничить ячейки, на которых эта функция будет "работать", изменив условие в блоке IF. Например, чтобы раскрасить ячейки в столбцеСтолько вы можете изменить блок IF выше на ff:

If Target.Cells.Count > 1 Or Target.Column <> 3 Then
    Exit Sub
End If

Конечно, вам придется сохранить свою рабочую книгу как документ с поддержкой макросов.

решение2

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

решение3

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

Нажмите на Microsoft Excel Objectsпапку вашего VBA Projectв VBE, затем дважды щелкните на , ThisWorkbookчтобы сгенерировать заглушку кода. Выберите Worksheetслева, а затем выберите SheetChangeсправа.

введите описание изображения здесь

введите описание изображения здесь

Так уж получилось, что в примере, ссылку на который я привел, это событие используется для управления цветом ячейки (вам пришлось бы обновить код, чтобы использовать строку "red", "green", "blue"вместо оператора case с числовыми значениями).

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