Corrigindo as cores das células no Excel ao alterar os valores dessas células

2

Aqui está um exemplo de 4 células em minha pasta de trabalho.

26  99
2   1

A pasta de trabalho é colorida de acordo com as regras 100 = vermelho 0 = amarelo, onde as coisas mais próximas de 0 são mais amarelas e mais próximas de 100 são mais vermelhas (definido por uma regra de formatação condicional que atribui cores com base no valor) .

Neste exemplo 99 seria muito vermelho, 1 e 2 seria muito amarelo e 26 teria um tom alaranjado.

Eu quero manter a cor das células igual, mas altere os valores nas células. Neste exemplo eu quero que eles sejam

E=0.0,Q=26  E=0.0,Q=99
E=2.10e-11,Q=2  E=1.02e-08,Q=1

(Observe como os valores do lado direito do q são iguais aos da primeira matriz)

Por causa da regra de formatação condicional, minhas cores desaparecem quando eu colo novos valores nelas.

    
por Jacob 26.05.2017 / 23:37

3 respostas

2

Sempre é possível adicionar 100 condições de formato com base no valor após o Q= em E=0.0,Q=99 . Aqui está uma macro que fará isso para você com qualquer célula selecionada, comparando cada valor de célula nua de 1 a 100 diretamente, ou comparando-a com o valor após o Q= se essa primeira comparação gerar um erro.

Você pode excluir a macro depois de executá-la para não precisar salvar o arquivo como XLSM. Remova o comentário da linha Selection.FormatConditions.Delete , removendo o apóstrofo, se você também deseja remover as condições de formato atuais.

Isso pressupõe que seu número seja sempre um número inteiro entre 1 e 100 (como valor da célula nua ou após o Q= ). Não funcionará para valores decimais.

Sub FormatMe()
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    'Selection.FormatConditions.Delete
    Dim addr As String
    addr = Replace(Selection.Cells(1).Address, "$", "")
    For i = 1 To 100
        With Selection.FormatConditions.Add(xlExpression, Formula1:= _
            "=OR(" & addr & " = " & i & ", IFERROR(RIGHT(" & addr & _
            ", LEN(" & addr & ") - FIND(""Q"", " & addr & ", 2) - 1) = """ & i & """, FALSE))")
           .Interior.Color = RGB(255, 255 - Int(i / 100 * 255), 0)
        End With
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
    
por 27.05.2017 / 05:55
0
  • Suposição : você deseja usar formatação condicional (e não VBA)
  • Suposição : a célula que você deseja colorir contém valores 'complexos' como "E = 0,0, Q = 26"

  • Resposta : escolha uma - a formatação condicional do excel não é inteligente o suficiente para "ler" o valor "E = 0.0, Q = 26" e encontrar o número 26.

    • O uso da sua própria fórmula de formatação pode funcionar, mas isso não pode aplicar um gradiente, pois ele só faz uma cor por condição, também conhecido como "se o número for 29, faça essa cor exata". (Tanto quanto eu sei - por favor corrija-me)
    • O Excel pode extrair automaticamente o número 26 de sua célula e essa célula (vizinha) pode ser formatada (usando a célula F4 =NUMBERVALUE(RIGHT(F4,LEN(F4)-FIND(",",F4)-2)) )
  • Minha sugestão apresenta seus dados de uma maneira diferente, use E e Q como cabeçalhos ou algo assim e mantenha todos os números em uma célula separada.

por 28.05.2017 / 13:19
-1

Use os valores de colar para que apenas os números sejam colados, caso contrário, a formatação também será colada.

    
por 27.05.2017 / 00:18