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

283
SidSen

Итак, я готовлю отчет в формате Excel и мне было интересно, могу ли я раскрасить текст в определенном столбце, в соответствии с какими значениями в нем, используя условное форматирование? Если быть точным, то будет две группы текста, и группа цветов 1 будет зеленого цвета, а другая - другого цвета.

Вот пример изображения - где я хотел бы, чтобы A, B и C встречались в ячейке, они были красного цвета, а если X, Y или Z встречались в ячейке, они окрашивались в зеленый. Это при игнорировании чисел внутри фигурных скобок и самих фигурных скобок.

Пример изображения -

enter image description here

Возможно ли это даже с помощью условного форматирования? Любая помощь приветствуется.

0
Вы не можете сделать это с помощью условного форматирования, поскольку это может в основном применять один и тот же формат ко всей ячейке. Вам понадобится VBA, и, при необходимости, вы сможете просмотреть содержимое ячейки и цвет символов. BruceWayne 5 лет назад 0

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

1
Rajesh S

Поэтому коды VBA подходят для этой задачи, поэтому я хотел бы предложить MACRO решить проблему.

enter image description here

Sub ColourPartiaText()  Dim Row As Integer, Col As Integer Dim CurrentCellText As String Col = 1   For Row = 2 To 5   CurrentCellText = ActiveSheet.Cells(Row, Col).Value   HotStartPosition = InStr(1, CurrentCellText, "A") CoolStartPosition = InStr(1, CurrentCellText, "B") CoolStartPosition1 = InStr(1, CurrentCellText, "C") CoolStartPosition2 = InStr(1, CurrentCellText, "X") CoolStartPosition3 = InStr(1, CurrentCellText, "Y") CoolStartPosition4 = InStr(1, CurrentCellText, "Z")   If HotStartPosition > 0 Then ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 1).Font.Color = RGB(255, 0, 0) End If   If CoolStartPosition > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 1).Font.Color = RGB(255, 0, 0) End If  If CoolStartPosition1 > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition1, 1).Font.Color = RGB(255, 0, 0) End If  If CoolStartPosition2 > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition2, 1).Font.Color = RGB(51, 153, 51) End If  If CoolStartPosition3 > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition3, 1).Font.Color = RGB(51, 153, 51) End If  If CoolStartPosition4 > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition4, 1).Font.Color = RGB(51, 153, 51) End If  Next Row End Sub 

Как это устроено:

  1. Запишите данные Column Aиз Row 2 to 5.
  2. Нажмите, Alt+F11чтобы открыть окно VB Editor.
  3. Copy& Pasteэтот код как standard module.
  4. Наконец, запустить макрос.

NB

  • В коде Col=1и For Row = 2 To 5доступны для редактирования, вы можете настроить в Column & Row positionсоответствии с размещением данных в вашем листе.
  • Цветовые коды также доступны для редактирования.
Это сработало чудесно! Мне пришлось сделать несколько изменений для моей реальной реализации, но это более или менее то, что мне нужно. Спасибо! для других - Символы (HotStartPosition, 1) меняют «1» на любое количество символов в фактическом тексте, которое будет окрашено. SidSen 5 лет назад 0
Рад помочь вам, продолжайте спрашивать ☺ Rajesh S 5 лет назад 0
Да ,, имя переменной ,,, Положение символов можно редактировать, вы можете настроить их по мере необходимости! Rajesh S 5 лет назад 0

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