Pular para o conteúdo

Gráfico auto-colorido

Imagine que você tem um gráfico com a performance de vendas de sua empresa, seja ele um gráfico de linha ou um gráfico de barras, tanto faz. E você sabe que sempre que essa performance está abaixo de um determinado patamar, há um sinal de alerta. Porém isso não fica claro no gráfico pois você tem de se esforçar para perceber se determinado segmento do gráfico de linhas ou determinada barra no gráfico de barras está realmente abaixo desse patamar.

Imagine agora que sempre que um dado estiver abaixo desse patamar ele automaticamente muda de cor no gráfico, como na imagem abaixo. Facilita bastante não é?


Gráfico de barras que se colore sem macros

Caso você queira usar este recurso apenas em gráficos de barras, sugiro fortemente o vídeo abaixo, o resultado visual é o mesmo do exibido neste post, porém muito mais simples e sem a necessidade de utilizar macros. Agora caso você queira utilizar o recurso em gráficos de linha ou outros, não tem escapatória, vai ter que ser por macro mesmo, nesse caso, siga a leitura.

Coloque o vídeo em tela cheia para assistir normalmente

Gráfico que se colore sozinho via macro

Para fazer este gráfico é necessário ter um pouco de conhecimento em Macro (VBA), saber montar um gráfico simples e também saber identificar o nome do gráfico na planilha.

Saber o nome do gráfico na planilha é um exercício bastante simples, basta selecionar o gráfico desejado e olhar para a Caixa de Nome logo a esquerda da Barra de Fórmulas. E para alterar o nome do gráfico selecionado basta ir até a Caixa de Nomes escrever o nome desejado e apertar a tecla Enter. Veja na imagem abaixo onde isso aparece.

Tendo ainda em mente a imagem acima, veja que para simular a performance de um indicador qualquer foi montada uma tabela simples com alguns mêses de 2014 e 2015 com a performance respectiva ao lado. Além disso vemos na célula E3 o limite ou o patamar que definimos para que sempre que a performance estiver abaixo dele, o gráfico deve mudar de cor.

Já é possível identificar na imagem acima que ambos os gráficos respeitam esse limite. Sempre que um ponto no gráfico de linhas está abaixo de 10% (valor do limite) o segmento fica em vermelho, e no segundo gráfico, sempre que uma barra está abaixo de 10% (valor do limite) ela também é pintada de vermelho.

Outro objeto que aparece na imagem é o botão ATUALIZAR. Que nada mais é do que uma figura ou forma inserida e transformada em um botão. Sempre que há alguma alteração nos dados da tabela de performance é necessário rodar a macro que irá pintar os gráficos novamente, de acordo com os novos valores, para isso basta apartar este botão.


O código da Macro

Uma vez que você tenha definido seu gráfico, identificado seu nome e escolhido uma célula para representar o limite, vamos ao código VBA. Abra o editor de macros apertando Alt + F11 e siga os passos demonstrados na imagem abaixo para inserir um novo módulo.

Na parte direita da tela aparecerá uma tela toda em branco, insira nela o código abaixo.

Sub Colorir()

''''Declaração de variáveis
 Dim srs As Series
 Dim iPoint, Limite As Long
 Dim vValues As Variant
 Limite = Range("E3").Value 'Célula onde está o limite
'''' FINAL DE - Declaração de variáveis
 
''''Pinta o gráfico de linhas
 ActiveSheet.ChartObjects("Gráfico Linha").Activate 'Nome do gráfico de linhas
 Set srs = ActiveChart.FullSeriesCollection(1)
 vValues = srs.Values
 For iPoint = 1 To UBound(vValues)
 With srs.Points(iPoint).Format.Line.ForeColor
 Select Case vValues(iPoint)
 Case Is >= Limite
 '.ObjectThemeColor = msoThemeColorAccent1 'Cor padrão dos gráficos Excel
 .RGB = RGB(255, 192, 0) 'Cor personalizada
 Case Is < Limite
 .RGB = RGB(255, 0, 0) 'Cor personalizada
 End Select
 End With
 Next
''''FINAL DE - Pinta o gráfico de linhas
 
''''Pinta o gráfico de barras
 ActiveSheet.ChartObjects("Gráfico Barra").Activate 'Nome do gráfico de barras
 Set srs = ActiveChart.FullSeriesCollection(1)
 vValues = srs.Values
 For iPoint = 1 To UBound(vValues)
 With srs.Points(iPoint).Format
 Select Case vValues(iPoint)
 Case Is >= Limite
 .Line.ForeColor.RGB = RGB(255, 192, 0) 'Cor personalizada da borda da barra
 .Fill.ForeColor.RGB = RGB(255, 192, 0) 'Cor personalizada do interior da barra
 Case Is < Limite
 .Line.ForeColor.RGB = RGB(255, 0, 0) 'Cor personalizada da borda da barra
 .Fill.ForeColor.RGB = RGB(255, 0, 0) 'Cor personalizada do interior da barra
 End Select
 End With
 Next
''''FINAL DE - Pinta o gráfico de barras
 
 Range("A1").Select
 
End Sub

De início, se você não estiver familiarizado, pode parecer complicado, mas não se assuste, o código contém alguns comentários que facilitam o seu entendimento, e somente algumas partes vão precisar ser alteradas para que funcione no seu gráfico.

Primeiramente o código acima contém uma parte para o gráfico de linhas e outra para o gráfico de barras, estas partes estão destacadas da seguinte forma:

''''Pinta o gráfico de linhas
Código
Código
Código
''''FINAL DE - Pinta o gráfico de linhas
''''Pinta o gráfico de barras
Código
Código
Código
''''FINAL DE - Pinta o gráfico de barras

Você pode deletar qualquer uma dessas partes caso não precise de alguma delas.

As partes do código que devem ser alteradas são os trechos onde aparecem:

  • Limite = Range(“E3”).Value ‘Célula onde está o limite

Altere o E3 para a célula onde está o seu limite.

  • .RGB = RGB(255, 0, 0) ‘Cor personalizada
  • .RGB = RGB(255, 192, 0) ‘Cor personalizada

Altere os números para conseguir a cor que deseja usando o sistema RGB.

  • ActiveSheet.ChartObjects(“Gráfico Linha”).Activate ‘Nome do gráfico de linhas
  • ActiveSheet.ChartObjects(“Gráfico Barra”).Activate ‘Nome do gráfico de linhas

Altere Gráfico Linha Gráfico Barra para o nome do seu gráfico de linhas ou de barras.

Caso seu gráfico esteja em outra aba (planilha) que não a que você está visualizando no momento, assim como a célula onde está o limite, faça as seguintes alterações:

  • Sempre que aparecer ActiveSheet altere para Sheets(“NOME DA ABA”)
  • Sempre que aparece Range altere para Sheets(“NOME DA ABA”).Range

Feito isso a única coisa que precisamos agora é de algum botão que facilite para atualizar as cores do gráfico. Algum botão que rode a macro que acabamos de escrever.

Você pode fazer isso inserindo qualquer forma ou figura que quiser, ou pode utilizar o próprio gráfico como botão, o procedimento em qualquer um desses casos é o mesmo. Como criei um botão específico para isso irei ilustrar como fazer utilizando ele.

Selecione com o botão direito do mouse o objeto que deseja utilizar como botão para rodar a macro e procure pela opção  Atribui Macro. Ao selecioná-la uma nova janela será aberta com o nome de todas as macros que estão presente na sua pasta de trabalho do Excel, selecione a que corresponde a macro recém criada e pronto. Agora sempre que você apertar o botão a macro irá rodar e atualizar as cores do gráfico de acordo com os dados inseridos no campo de limite e na tabela de performance.


Acompanhe o Função Excel
   

3 comentários em “Gráfico auto-colorido”

  1. Uma observação: Para limite percentual eu precisei alterar: Limite As Long para: Limite As Double pois não estava colorindo corretamente, mas o restante foi nota 1000. Obrigado!

Deixe um comentário ou uma dúvidaCancelar resposta

Sair da versão mobile