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 e 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.
o vídeo foi excluído
Boa noite !
Gostaria de colocar uma reta formula Y=1,72x – 43,15, como marcador de limite no gráfico, quais instruções devo usar no VBA?
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!