W programie Excel istnieje kilka sposobów dynamicznego pokolorowania pełnej komórki na podstawie jej wartości, ale czy istnieje sposób dynamicznego pokolorowania tylko części komórki na podstawie jej wartości?
Załóżmy na przykład, że tworzę raport, który wygląda mniej więcej tak:
_________________________
| | Dec | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|
W tym scenariuszu chcę pokolorować tylko wartości procentowe (-25%) i (+ 10%), a nie wartości dolara 75 USD i 55 USD, które również znajdują się w komórce. Dodatkowym problemem jest to, że kolorowanie powinno być dynamiczne (zielony dla wartości dodatnich, czerwony dla wartości ujemnych), a te komórki są odniesieniami (więc ręczne kolorowanie jest poza tabelą).
Próbowałem użyć wbudowanej TEXT()
funkcji, ale to też nie działało. W szczególności próbowałem =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")
gdzie A1
jest odwołanie do komórki do kwoty w dolarach i A2
odwołanie do komórki do procentowej delty.
Frustrujące jest to, że niestandardowe formatowanie [Green]0%;[Red](-0%)
działa dobrze po zastosowaniu do całej komórki (za pośrednictwem sekcji niestandardowego formatowania liczb), ale po zastosowaniu TEXT()
funkcji przestaje działać. Jak mogę niestandardowo pokolorować wartość częściową w komórce?
Odpowiedzi:
Odkryłem dwa podejścia do obejścia tego problemu i żadne z nich nie było naprawdę optymalne.
Pierwszym podejściem było podzielenie ciągów na dwie osobne kolumny, w ten sposób mogłem użyć jednego z wcześniej opisanych niestandardowych formatowań, aby ustawić jego kolor. To nie jest idealne rozwiązanie, ponieważ musiałem pójść na kompromis w sprawie „wyglądu i sposobu działania” raportu, aby uwzględnić tę dodatkową kolumnę.
Drugie podejście polega na użyciu VBA / makr, które, choć zdecydowałem się unikać w tym konkretnym scenariuszu, byłyby wystarczające. Chociaż nie wydrukuję całego działającego kodu, najważniejsze jest sprowadzenie się do tego:
ActiveCell
lub za pomocą pętli)Instr
funkcji, aby znaleźć lokalizację w ciągu, w której chcesz zmodyfikować kolorInstr
ponownie, aby znaleźć miejsce w ciągu, w którym chcesz zatrzymać kolorCharacters(start, length)
funkcji, aby podświetlić dokładne znaki, które chcesz zmodyfikować, przekazując wartości znalezione wcześniej.Font.Color = RGB(r,g,b)
źródło
Przykład użycia makra można znaleźć tutaj:
Makro, aby pokolorować część tekstu w komórkach w Excelu
źródło
To makro pokoloruje wybrany zakres tekstu zawierającego nawiasy na czerwony, jeśli tekst w nawiasach zawiera znak „-”, w przeciwnym razie pokoloruje go na zielono. Cały tekst poza nawiasami pozostaje niezmieniony.
źródło
Wstaw tekst nad tekstem, który chcesz wyróżnić, ustaw szerokość tak szeroką, jak potrzebujesz, aby ją wyróżnić, zmień kolor tekstu na żółty (lub dowolny wybrany kolor) i zmniejsz krycie linii do własnych upodobań.
źródło
Jedno wykonalne podejście, choć nie jest rozwiązaniem w MS EXCEL, jeśli podzielisz siatkę arkusza programu Excel (szerokość komórki) równą przestrzeni znaków, możesz użyć jej w wybranym kolorze:
źródło