В 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()
функцию перестает работать. Итак, как я могу настроить цвет частичного значения в ячейке?
Ответы:
Было найдено два подхода к решению этой проблемы, и ни один из них не был оптимальным.
Первым подходом было разбиение строк на два отдельных столбца, чтобы я мог использовать один из ранее описанных пользовательских форматов, чтобы установить его цвет. Это не идеальное решение, потому что мне пришлось пойти на компромисс с «внешним видом» отчета, чтобы вместить этот дополнительный столбец.
Второй подход заключается в использовании VBA / макросов, что, хотя я решил избежать в этом конкретном сценарии, было бы до этой задачи. Хотя я не буду распечатывать весь рабочий код, все сводится к следующему:
ActiveCell
петлю)Instr
функцию, чтобы найти место в строке, где вы хотите изменить цветInstr
снова, чтобы найти место в строке, где вы хотите остановить цветCharacters(start, length)
функцию, чтобы выделить точные символы, которые вы хотите изменить, передавая значения, найденные ранее.Font.Color = RGB(r,g,b)
источник
Пример использования макроса можно найти здесь:
Макрос для окраски части текста в ячейках в Excel
источник
Один выполнимый подход, хотя это не решение в MS EXCEL, если вы разделите сетку листа Excel (ширину ячейки) на символьное пространство, тогда вы можете использовать ее по вашему выбору:
источник
Этот макрос закрасит любой выбранный диапазон текста, содержащий скобки, в красный, если текст в скобках содержит символ «-», в противном случае он будет окрашен в зеленый цвет. Весь текст за скобками остается без изменений.
источник
Вставьте строку поверх текста, чтобы выделить ее, сделайте ее настолько широкой, насколько вам нужно, чтобы выделить ее, измените цвет текста на желтый (или любой другой цвет по вашему выбору) и уменьшите непрозрачность линии по своему вкусу.
источник