No Excel, existem várias maneiras de colorir dinamicamente uma célula completa com base em seu valor, mas existe alguma maneira de colorir dinamicamente apenas parte da célula com base em seu valor?
Por exemplo, digamos que estou criando um relatório parecido com o seguinte:
_________________________
| | Dec | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|
Nesse cenário, desejo apenas colorir os valores de porcentagem (-25%) e (+ 10%), e não os valores em dólar $ 75 e $ 55, que também estão na célula. Para aumentar o problema, a coloração deve ser dinâmica (verde para valores positivos, vermelho para valores negativos) e essas células são referências (portanto, a coloração manual fica fora da tabela).
Eu tentei usar a TEXT()
função interna, mas isso também não funcionou. Tentei especificamente =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")
onde A1
está a referência de célula para o valor em dólar e A2
é a referência de célula para o delta de porcentagem.
O frustrante é que a formatação personalizada [Green]0%;[Red](-0%)
funciona bem quando aplicada a toda a célula (através da seção de formatação de números personalizados), mas quando aplicada através da TEXT()
função, ela pára de funcionar. Então, como posso personalizar a cor de um valor parcial dentro de uma célula?
Respostas:
Descobri duas abordagens para contornar esse problema e nenhuma delas realmente ótima.
A primeira abordagem foi dividir as strings em duas colunas separadas, para que eu pudesse usar uma das formatações personalizadas descritas anteriormente para definir sua cor. Essa não é uma solução ideal, pois tive que comprometer a "aparência e o aspecto" do relatório para acomodar essa coluna extra.
A segunda abordagem é através do uso de macros VBA /, que, embora eu tenha optado por evitar nesse cenário em particular, estaria à altura da tarefa. Embora eu não imprima todo o código de trabalho, ele se resume a isso:
ActiveCell
ou em um loop)Instr
função para encontrar o local na string onde você deseja modificar a corInstr
novamente para encontrar o local na sequência em que deseja interromper a cor.Characters(start, length)
função para destacar os caracteres exatos que você deseja modificar, transmitindo os valores encontrados anteriormente.Font.Color = RGB(r,g,b)
fonte
Um exemplo usando uma macro pode ser encontrado aqui:
Macro para colorir parte do texto em células no Excel
fonte
Uma abordagem viável, embora não seja uma solução no MS EXCEL, se você dividir a grade da planilha do Excel (largura da célula) igual a um espaço de caracteres, poderá usar a cor de sua escolha:
fonte
Essa macro colorirá qualquer intervalo selecionado de texto que contenha colchetes para vermelho se o texto entre colchetes contiver um caractere "-"; caso contrário, será verde. Todo o texto fora dos colchetes permanece inalterado.
fonte
Insira uma linha sobre o texto que deseja destacar, torne a linha a largura que você precisa para iluminar, mude a cor do texto para amarelo (ou qualquer cor que você escolher) e reduza a opacidade da linha ao seu gosto.
fonte