12

В Excel есть несколько способов динамического цвета полной ячейки на основе ее значения, но есть ли способ динамического цвета только части ячейки на основе ее значения?

Например, скажем, я создаю отчет, который выглядит примерно так:

 _________________________
|       |    Dec    | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|

В этом сценарии я хочу только раскрасить значения в процентах (-25%) и (+10%), а не значения в долларах 75 и 55 долларов, которые также находятся в ячейке. Добавление к проблеме заключается в том, что раскраска должна быть динамической (зеленый для положительных, красный для отрицательных значений), и эти ячейки являются ссылками (поэтому ручная раскраска не стоит на столе).

Я попытался использовать встроенную функцию TEXT() , но это тоже не сработало. В частности, я попытался =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)") где A1 - ссылка на ячейку в долларах, а A2 ссылка на ячейку в процентах дельта.

Огорчает то, что пользовательское форматирование [Green]0%;[Red](-0%) прекрасно работает, когда применяется ко всей ячейке (через раздел пользовательского форматирования чисел), но при применении через функцию TEXT() перестает работать Итак, как я могу настроить частичное значение внутри ячейки?

4 ответа4

7

Было найдено два подхода к решению этой проблемы, и ни один из них не был оптимальным.

Первым подходом было разбиение строк на два отдельных столбца, чтобы я мог использовать один из ранее описанных пользовательских форматов, чтобы установить его цвет. Это не идеальное решение, потому что мне пришлось пойти на компромисс с "внешним видом" отчета, чтобы вместить этот дополнительный столбец.

Второй подход заключается в использовании VBA/ макросов, что, хотя я решил избежать в этом конкретном сценарии, было бы до этой задачи. Хотя я не буду распечатывать весь рабочий код, все сводится к следующему:

  1. Найдите ячейку, которую вы хотите настроить (через ActiveCell или цикл)
  2. Используйте функцию Instr чтобы найти место в строке, где вы хотите изменить цвет
  3. Если длина текста является переменной, используйте Instr снова, чтобы найти место в строке, где вы хотите остановить цвет
  4. Используйте функцию « Characters(start, length) чтобы выделить точные символы, которые вы хотите изменить, передавая значения, найденные ранее.
  5. Измените цвет с помощью Font.Color = RGB(r,g,b)
4

Пример использования макроса можно найти здесь:

Макрос для раскраски части текста в ячейках в Excel

Макросы Excel - для циклического окрашивания части ячеек

Используйте макрос Excel, который содержит цикл for, чтобы циклически проходить через строки данных о погоде и окрашивать часть текста ячейки в красный цвет, если он содержит слово hot, и синий, если он содержит слово cool:

инструкции

  1. Нажмите на вкладку Разработчик в Excel
  2. Нажмите на значок Visual Basic и скопируйте текст макроса ниже в окно кода
  3. Нажмите значок Excel, чтобы вернуться к представлению Excel.
  4. Нажмите на значок «Макросы», выберите макрос под названием TextPartColourMacro и нажмите «Выполнить».

Завершенный макрос:

Sub TextPartColourMacro()

' Declarations and Initialisation
Dim Row As Integer, Col As Integer
Dim CurrentCellText As String
Col = 1

' Loop Through Rows 2 to 5
For Row = 2 To 5

    ' Get Text in Current Cell
    CurrentCellText = ActiveSheet.Cells(Row, Col).Value

    ' Get the Position of the Text Hot and Cool
    HotStartPosition = InStr(1, CurrentCellText, "Hot")
    CoolStartPosition = InStr(1, CurrentCellText, "Cool")

    ' Colour the Word Hot Red
    If HotStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 3).Font.Color = RGB(255, 0, 0)
    End If

    ' Colour the Word Cool Blue
    If CoolStartPosition > 0 Then
        ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 4).Font.Color = RGB(0, 0, 255)
    End If

Next Row
End Sub
0

Один выполнимый подход, хотя это не решение в MS EXCEL, если вы разделите сетку листа Excel (ширину ячейки) на символьное пространство, тогда вы можете использовать ее по вашему выбору:

Пример листа

-1

Вставьте строку поверх текста, чтобы выделить ее, сделайте ее настолько широкой, насколько вам нужно, чтобы выделить ее, измените цвет текста на желтый (или любой другой цвет по вашему выбору) и уменьшите непрозрачность линии по своему вкусу.

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