Como mudar o gráfico ao passar o mouse no Excel, evento conhecido como mousehover em programação VBA.
O efeito é dado à partir de uma técnica muito interessante e que pode ser aplicado em diversas situações, ajudando a criar uma iteratividade não nativa do Excel.
O efeito que temos ao final é o seguinte:
Acompanhe abaixo o exemplo, ao topo há também uma aula em vídeo no nosso canal do Youtube que você pode ver passo-a-passo como criar do zero e pode realizar o download do exemplo ao final do artigo.
Base de dados
A base de dados que utilizaremos no nosso exemplo é composta por duas colunas apenas, data e valor.
Ela contém uma base de 12 meses de vendas de uma empresa fictícia.
Um ponto a ser chamado a atenção é que independente do seu gráfico, cada coluna deve conter apenas um tipo específico de informação.
Isto é necessário em diversas situações no Excel, pois garante que consigamos utilizar fórmulas e gráficos sem muitas manipulações, de uma forma mais direta e organizada.
Criando os cálculos
O objetivo é que o nosso gráfico mude ao alterar a data inicial da análise, retornando as vendas por dia do mês definido.
Para isso realizamos alguns cálculos, como a geração de todos os dias do mês.
Utilizamos para isso a função SEQUÊNCIA, que está disponível no Excel 365 e à partir do Excel 2021.
A função é a seguinte:
=SEQUÊNCIA(E12-E11+1)
Aonde temos no parâmetro a diferença de dias entre a data final e a inicial do mês +1, pois queremos que o dia 1 também seja considerado.
Com este único parâmetro a função sequência irá gerar uma lista com todos os dias do mês que foi selecionado no gráfico.
A segunda função que utilizamos foi a função FILTRO.
Utilizamos para isso a função SEQUÊNCIA, que está disponível no Excel 365 e à partir do Excel 2021.
A função utilizada foi a seguinte:
=FILTRO($C$10:$C$799;($B$10:$B$799>=$E$11)*($B$10:$B$799<=$E$12))
A função filtro retorna os dados de uma lista ou tabela conforme condições determinadas.
No caso estamos retornando os valores do mês de janeiro (Coluna C), filtrando as datas (Coluna B), conforme condições de data inicial e final do período definidas acima.
Na célula Gráfico!N5, temos a informação que será retornada ao passar o mouse, que falaremos adiante.
Criamos então uma função de SE que se Gráfico!N5 estiver com a palavra Comparativo, retorna os dois meses, senão somente Gráfico!N5.
=SE(Gráfico!$N$5=”Comparativo”;$E$9:$F$9;Gráfico!N5)
Aplicamos então a mesma fórmula para o mês anterior ao mês selecionado para análise, a fim de gerar um comparativo.
A função que utilizamos para isto foi a seguinte:
=FILTRO($F$17:$G$47;($F$16:$G$16=H16#))
Resumindo a função filtra os dados do intervalo de valores se os meses estiverem dentro do período filtrado pelo gráfico.
Resultando então em uma lista de dados dinâmica que muda conforme os períodos selecionados.
Criando o Gráfico
Para termos um gráfico que altera o tamanho conforme a quantidade de linhas, nós utilizamos um intervalo nomeado e uma fórmula.
A fórmula que usamos aumenta o intervalo de dados conforme a quantidade de números que temos na coluna de sequência de dias.
A função utilizada é a abaixo.
=DESLOC(Dados!$H$17;;;CONT.NÚM(Dados!$F$17#))
Veja que utilizamos #, ou seja, se refere a um intervalo dinâmico de dados, veja mais em: https://www.guiadoexcel.com.br/matrizes-dinamicas-excel-o-que-muda/
E com isso ela sempre irá se referir a todo o intervalo que a fórmula sequência está preenchendo.
Fazemos isso para os dois valores, coluna 1 e 2 do gráfico.
Selecionamos então o intervalo atual e pressionamos ALT+F1 para gerar um gráfico.
Nele nós adicionamos duas entradas de dados, uma para o mês inicial e outra pro final.
E apontamos para os deslocs que citamos.
ATENÇÃO: O caminho deve ser completo, incluindo o nome da pasta de trabalho, por exemplo:
=’Gráfico de linhas com interação de visibilidade aula.xlsm’!graf_valor1
Mudando o Gráfico ao Passar o Mouse Excel MouseHover
Para mudar o gráfico ao passar o mouse iremos criar uma função própria no VBA, também chamada de UDF, veja mais um exemplo em: https://www.guiadoexcel.com.br/remover-acentos-e-caracteres-especiais-do-excel/
Para isso faça o seguinte procedimento:
- Abra o Excel com uma planilha em branco.
- Caso não esteja habilitada a sua guia desenvolvedor habilite-a, veja neste artigo como: https://www.guiadoexcel.com.br/como-criar-funcoes-proprias-no-excel-com-vba/.
- Clique na guia Desenvolvedor e no botão Visual Basic.
- Na estrutura da esquerda selecione aberta.
- Clique no menu em Inserir->Módulo.
- Abra este novo arquivo criado clicando duas vezes e cole o código seguinte. Este é o código da nossa função própria que identifica a posição de um carácter em um texto de uma célula á partir de determinada ocorrência.
Na planilha do gráfico adicione o seguinte código VBA:
Public Function lfPreencher(ByVal lNome As String, ByVal lDestino As String) As String
If IsDate(lNome) Then
ActiveSheet.Range(lDestino) = CDate(lNome)
Else
ActiveSheet.Range(lDestino) = lNome
End If
End Function
O código acima funciona da segunte forma:
O parâmetro lNome é o valor de entrada e o lDestino é o endereço aonde será gravado o valor.
Ao passar o mouse o Excel irá verificar se o campo lNome é uma data ou não e irá passar este valor para a planilha ativa na célula de endereçamento do destino.
A aplicação disto no Excel é feita em conjunto com a função Hiperlink como vemos abaixo:
A função que usamos é então:
=SEERRO(HIPERLINK(@lfPreencher(D9;”$N$5″);D9);D9)
Aonde a função SEERRO, evita a mensagem de erro e retorna o valor de D9 que é a data do mês atual e a hiperlink utiliza como referência o a função lfPreencher, que acabamos de criar.
O efeito é que ao passar o mouse sobre ela o Hiperlink aciona a função lfPreencher e o Excel preenche os dados na célula de destino N5, dando o efeito que desejamos, pois a N5 está ligada com as fórmulas.
Fazemos isto para a célula mês atual, anterior e comparativo e temos então o efeito abaixo, que ao passar o mouse é alterada a informação na célula.
Veja mais sobre mudar o gráfico ao passar o mouse no Excel
Temos mais alguns artigos sobre MouseHover:
https://www.guiadoexcel.com.br/excel-mudar-celulas-ao-passar-o-mouse-mousehover/
https://www.guiadoexcel.com.br/grafico-comparativo-de-linhas-exemplo-brasileirao-2018-1o-turno/
Recomendo também assistir o vídeo no topo, nela nós temos um vídeo completo de como fazer esta solução e eu recomendo assistir pois assim ficará ainda mais claro e poderá consultar aqui no artigo os códigos para usar também na sua solução.
Download da Planilha Mudar gráfico ao passar o mouse. MouseHover
Realize o download da planilha deste artigo no botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.