Além da Formatação Condicional

Às vezes o Excel é irritante: como faço para que a formatação condicional não pare no primeiro critério?

Por exemplo: numa célula quero que o número fique em cor vermelha quando o valor dentro da célula da esquerda for igual a zero e, ao mesmo tempo, a mesma célula deve apresentar uma borda se o número for maior que zero… Olhem a imagem:

Vamos adicionar um pouco de código VBA (Visual Basic dentro do Excel) para resolver o problema, na guia da planilha (bem lá embaixo do Excel) clique com o botão da direita e selecione Exibir Código:

O VBA (a janela do Visual Basic)  vai abrir exatamente onde devemos inserir o código:

Bom, agora é só acrescentar este código:


Private Sub Worksheet_Change(ByVal Target As Range)
Set MyPage = Range("b2: b20 ") 'aqui definir o intervalo
' atenção: intervalos muito grandes deixará o excel muito lento!
For Each Cell In MyPage
' se célula for maior do que zero
If Cell.Value > 0 Then
'Cell.Interior.ColorIndex = 6 ' deixar se quiser mudar o fundo
' fazer as bordas esquerda, embaixo, direita e alto:
With Cell.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Cell.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Else ' tirar as bordas caso contrário
Cell.Borders(xlEdgeLeft).LineStyle = xlNone
' olhar borda de baixo da célula de cima antes de apagar:
Cell.Borders(xlEdgeTop).LineStyle = Cell.Offset(-1, 0).Borders(xlEdgeBottom).LineStyle
Cell.Borders(xlEdgeBottom).LineStyle = xlNone
Cell.Borders(xlEdgeRight).LineStyle = xlNone
End If
' se célula do lado esquerda for zero
If Cell.Offset(0, -1).Value = 0 Then
Cell.Font.ColorIndex = 3 ' cor vermelha
Else ' colocar cor preta no caso contrário
Cell.Font.ColorIndex = 0 ' cor preta
End If
Next
End Sub

Agora cole alguns zeros e outros números na coluna A (entre A2 e A20) e na coluna B alguns valores positivos e negativos (entre B2 e B20) e teste os resultados!

Links úteis:

http://www.ozgrid.com/Excel/font-formats.htm

http://en.kioskea.net/forum/affich-21716-conditional-formatting-more-than-3-in-excel

http://www.mrexcel.com/forum/showthread.php?t=36072

http://www.mrexcel.com/forum/showthread.php?t=74483

Vencimento – Formatação Condicional

Em minhas aulas de informática tenho algumas dicas interessantes, pouco valorizadas pelos alunos, uma delas é sobre o seguinte tema: formatação condicional – Hoje, amanhã e depois de amanhã: como fazer para formatar datas de contas a vencer hoje ou dentro dos próximos dias?

O link é:

http://www.naotemnome.com/fapa/_lista16/_completa.html#12

Basicamente queremos alterar a cor da célula que possui datas iguais a hoje ou dos próximos dias. Supondo que a data a formatar esteja na célula C2, na formatação condicional, a “condição 1” deve mostrar “A FÓRMULA É” e a fórmula usada dentro da formatação condicional é:

=E(C2<(HOJE()+3);C2>=HOJE())

Esta é uma função lógica, a função E( ). Ela resulta no valor VERDADEIRO caso as sejam verdadeiras as duas condições (ou mais) separadas por ponto-e-vírgula e FALSO se uma das condições for falsa.

Se eu quiser ao invés desses 3 dias, mostrar as datas de amanhã e mais 6 dias (7 dias no total), mudaria a fórmula para:

=E(C2<=(HOJE()+7);C2>HOJE())

vencimento - formatação condicional

resultado da formatação condicional de datas a vencer

Dúvidas? Deixe um comentário com sua pergunta ou escreva diretamente para o meu e-mail!