Formatar texto em células

2

O Excel facilita a formatação das cores de plano de fundo de um intervalo de células para um intervalo / espectro de cores. Eu selecione "Formatação Condicional" → "Nova Regra" → "Formatar todas as células com base nos seus valores ”e Formatar Estilo:“ Escala de 2 Cores ”. Isso altera a cor background (preenchimento) das células, com base em seus valores. Por exemplo, isso:

definiráacordepreenchimentodascélulascontendoovalormaisbaixonointervaloparavermelho,ovalormaisaltoparaazul,evaloresintermediáriosparatonsdefúcsia,rosa,violetaeroxo:

Como posso alterar a cor do texto usando as mesmas condições?

    
por microex 14.01.2018 / 21:55

3 respostas

0

Eu gostaria de sugerir-lhe simples código VBA para formatação condicional os dados de texto no intervalo especificado.

É o método mais curto, agora o que você tem que fazer, no intervalo de dados, o TEXTO tem a ocorrência máxima e você pode classificá-los se possível.

Private Sub CommandButton1_Click()

lRow = Range("A" & Rows.Count).End(xlUp).Row
Set Mrng = Range("A120:A" & lRow)

For Each Cell In Mrng

    Select Case Cell.Value
        Case "Yes"
            cell_colour = 9
        Case "No"
            cell_colour = 5
        Case Else
            cell_colour = 3
        End Select

    Cell.Font.ColorIndex = cell_colour
Next

End Sub

NB: Aplique o Código de índice de cor & também altere o intervalo de dados, conforme necessário.

Espero que isso ajude você.

Nota, Eu testei este código antes de publicá-lo aqui. Se alguém difere dela, escreva a REASON antes de VOZ ABAIXAR.

    
por 16.01.2018 / 10:48
0

Não parece haver uma maneira nativa de fazer isso a partir da GUI. No entanto, não é difícil no VBA. Essa rotina definirá a cor do primeiro plano / texto de cada célula no intervalo Target para uma cor linearmente interpolado entre a cor Lo e a cor Hi , com base em como o valor na célula se compara ao Lo_Val e ao Hi_Val :

Sub Colorize(Target As Range, Lo_Val, Hi_Val, Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B)
    Dim R, G, B As Long

    delta_val = Hi_Val - Lo_Val
    If (delta_val <= 0) Then
        MsgBox "Lo_Val and Hi_Val must not be the same, or in the wrong order."
        Exit Sub
    End If
    If (Application.Min(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) < 0 _
                Or Application.Max(Lo_R, Lo_G, Lo_B, Hi_R, Hi_G, Hi_B) > 255) Then
        MsgBox "Invalid color(s)."
        Exit Sub
    End If
    Delta_R = Hi_R - Lo_R
    Delta_G = Hi_G - Lo_G
    Delta_B = Hi_B - Lo_B
    For Each c In Target
        If (c < Lo_Val Or c > Hi_Val) Then
            c.Font.Color = 0        ' Black
            ' Alternatively, set values < Lo_Val to the Lo color
            ' and set values > Hi_Val to the Hi color.
            ' Or do nothing, leaving them with whatever color they have now.
        Else
            Diff_Val = c - Lo_Val
            ' We probably could just compute (c - Lo_Val) / delta_val
            ' at this point, but I'm not sure how well that would work
            ' with the rounding.
            R = Round(Lo_R + Delta_R * Diff_Val / delta_val)
            G = Round(Lo_G + Delta_G * Diff_Val / delta_val)
            B = Round(Lo_B + Delta_B * Diff_Val / delta_val)
            ' Use 256& to get a constant with value 256 and type Long.
            c.Font.Color = R + 256& * G + 256& * 256& * B
        End If
    Next c
End Sub

Veja Como adiciono o VBA no MS Office? para informações gerais sobre como inserir e usar isso.

Eu escrevi isso como uma rotina com parâmetros para flexibilidade. AFAIK, é impossível chamar uma rotina VBA com parâmetros da interface do Excel normal. Você pode querer definir uma macro stubby (com os parâmetros no ) que chama o acima com os parâmetros que você deseja; por exemplo,

Sub Macro1()
'
' Macro1 Macro
'
    Call Colorize(Range("A1:J1"), 1, 10, 255, 0, 0, 0, 0, 255)
End Sub

que definirá números baixos (1 e acima) em tons de vermelho, e números altos (10 e abaixo) em tons de azul. Por exemplo, usando os números da pergunta, isso nos dá

(ondeeuaumenteimanualmenteotamanhodafonteparatornarascoresmaisvisíveis).

Vocêpodechamarissode"Desenvolvedor" → "Código" → "Macros", ou ligá-lo a um botão. Ou, se você quiser que a formatação aconteça automaticamente sempre que você alterar um valor, você pode usar uma rotina Worksheet_Change para chamar Colorize . E, para que isso se comporte mais como a formatação condicional, você pode codificá-lo para definir Lo_Val e Hi_Val aos valores mínimo e máximo atualmente no intervalo.

Notas:

  • A linha Dim R, G, B As Long parece não ser necessária. Mas eu recebo erros de estouro quando uso 256 em vez de 256& .
  • A ciência de como o olho humano e o cérebro humano percebem a cor é muito complicado. A interpolação linear de valores RGB é provavelmente não é o melhor algoritmo para gerar um intervalo graduado / espectro de cores.
por 15.01.2018 / 21:01
-1

Sim, é muito possível, para isso, siga estes passos.

  1. Selecione o intervalo de dados.
  2. Clique em Formatação condicional.
  3. Clique em Novas regras.
  4. Localizar & Selecione a opção "Formatar apenas as células que contêm"
  5. Em Editar a descrição da regra.
  6. Defina "Formatar apenas célula com", Valor da célula & É igual a colocar o texto, por exemplo, Oriente, em seguida, aperte o botão FORMAT e selecione o texto apropriado Cor.

Observação: você precisa repetir os passos 1 a 6 para outros Text & Cor para o mesmo intervalo de dados.

Se possível, classifique o Intervalo de dados para que o texto apareça em Grupos e selecione & aplicar formatação de condição.

Espero que isso ajude você.

    
por 15.01.2018 / 11:12