Trocar Imagens com Segmentação de Dados no Excel

Aprenda como trocar imagens com segmentação de dados no Excel utilizando fórmulas passo-a-passo.

O Excel é uma ferramenta poderosa, não apenas para cálculos e análises de dados, mas também para criar experiências interativas.

Um exemplo avançado e criativo é a troca automática de imagens com base na segmentação de dados. Este recurso pode ser utilizado em dashboards, relatórios e até mesmo em ferramentas de apresentação, trazendo dinamismo e sofisticação ao trabalho.

Neste artigo, vamos mostrar como configurar a troca de imagens usando segmentações de dados no Excel, passo a passo.

Vídeo-Aula Trocar Imagens com Segmentação de Dados no Excel

Assista no vídeo abaixo passo-a-passo como trocar imagens usando segmentação de dados no Excel.

Como Funciona a Troca de Imagens?

O conceito por trás da troca de imagens é simples:
vincular uma segmentação de dados a uma tabela ou intervalo de valores que contenha links para imagens. Ao selecionar um item na segmentação de dados, a imagem correspondente é automaticamente exibida em uma área designada.

Para isso vamos usar:

  1. Segmentação de dados.
  2. Tabela dinâmica.
  3. Intervalo Nomeado
  4. Função “INDIRETO” e área de imagem vinculada.
  5. VBA (opcional, para automatização avançada).

Passo-a-passo para Trocar Imagens no Excel

A primeira parte é criar uma tabela ou lista de dados que tenham as informações que serão utilizadas na sua segmentação.

No exemplo abaixo temos uma tabela de exemplo com gerentes, faturamento e a região.

trocar imagens excel 1

Cadastro de imagens

A segunda parte é criar uma lista com imagens e nomes, estas imagens tem que estar sobre as células e não dentro das células.

Clique em Inserir->Imagens->Colocar sobre Células->Este dispositivo e insira as imagens dentro de cada célula dentro dos limites das células como temos abaixo.

trocar imagens excel 2

Para inserir as imagens pode ser feito manualmente ou senão com o código VBA abaixo que irá solicitar a pasta e inserir automaticamente as imagens no Excel à partir da célula que estiver selecionada e também colocará o nome de cada uma das imagens.

É importante que o nome que está ao lado da imagem seja exatamente igual ao nome que está na tabela, pois será usado para retornar a imagem ao lado.

Para colocar o código clique na guia Desenvolvedor->Visual Basic e no VBE clicar em Inserir->Módulo e coloque o código abaixo.

Depois, voltando ao Excel clique em Macros e selecione a macro InserirImagensDePastaComEscolha para inserir as imagens.

Código VBA para Inserir Imagens no Excel

Sub InserirImagensDePastaComEscolha()
    Dim ws As Worksheet
    Dim selectedCell As Range
    Dim currentCell As Range
    Dim imgFolder As String
    Dim imgFile As String
    Dim imgName As String
    Dim pic As Picture
    Dim cellWidth As Double
    Dim cellHeight As Double
    Dim imgWidth As Double
    Dim imgHeight As Double
    Dim aspectRatio As Double
    Dim folderDialog As FileDialog

    ' Configurar a planilha e a célula inicial
    Set ws = ActiveSheet
    Set selectedCell = Selection ' Célula selecionada para começar
    Set currentCell = selectedCell

    ' Abrir diálogo para selecionar a pasta
    Set folderDialog = Application.FileDialog(msoFileDialogFolderPicker)
    With folderDialog
        .Title = "Selecione a pasta de imagens"
        .AllowMultiSelect = False
        If .Show <> -1 Then Exit Sub ' Se o usuário cancelar, sai da macro
        imgFolder = .SelectedItems(1)
    End With
    
    ' Certificar-se de que o caminho termina com uma barra invertida
    If Right(imgFolder, 1) <> "\" Then imgFolder = imgFolder & "\"

    ' Apagar todas as imagens existentes na planilha
    For Each pic In ws.Pictures
        pic.Delete
    Next pic

    ' Obter o primeiro arquivo de imagem na pasta
    imgFile = Dir(imgFolder & "*.jpg")

    ' Loop pelas imagens na pasta
    Do While imgFile <> ""
        ' Obter o nome do arquivo sem a extensão
        imgName = Left(imgFile, InStrRev(imgFile, ".") - 1)

        ' Nome da imagem na célula atual
        currentCell.Value = imgName

        ' Inserir a imagem na célula à direita
        Set pic = ws.Pictures.Insert(imgFolder & imgFile)
        
        ' Dimensões da célula da direita
        cellWidth = currentCell.Offset(0, 1).Width
        cellHeight = currentCell.Offset(0, 1).Height

        ' Dimensões originais da imagem
        imgWidth = pic.Width
        imgHeight = pic.Height

        ' Calcular a proporção da imagem
        aspectRatio = imgWidth / imgHeight

        ' Ajustar tamanho da imagem para caber na célula mantendo a proporção
        If (cellWidth / aspectRatio) <= cellHeight Then
            ' Ajustar com base na largura da célula
            pic.Width = cellWidth
            pic.Height = cellWidth / aspectRatio
        Else
            ' Ajustar com base na altura da célula
            pic.Height = cellHeight
            pic.Width = cellHeight * aspectRatio
        End If

        ' Centralizar a imagem dentro da célula à direita
        pic.Left = currentCell.Offset(0, 1).Left + (cellWidth - pic.Width) / 2
        pic.Top = currentCell.Offset(0, 1).Top + (cellHeight - pic.Height) / 2

        ' Avançar para a próxima linha
        Set currentCell = currentCell.Offset(1, 0)

        ' Próximo arquivo de imagem
        imgFile = Dir
    Loop
End Sub

Além disso selecione uma célula e mude a cor para cinza e escreva vazio ao lado, pois quando não houver imagem ele irá colocar cinza na imagem.

Tabela Dinâmica

Insira uma tabela dinâmica à partir da tabela de dados e também uma segmentação de dados clicando em Inserir->Tabela dinâmica e selecionando os dados.

Em seguida na guia Dados clique em Segmentação de dados e selecione o filtro que deseja, como no caso Região.

Clique com o botão direito e em classificar, classifique do maior pro menor faturamento.

Função para Retornar Imagem no Excel

Em uma célula coloque esta fórmula, considerando na coluna D os valores com os nomes dos vendedores na tabela dinâmica.

=INDIRETO(“Imagens!”&SEERRO(“D”&CORRESP(Cálculos!$B$6;Imagens!$C$1:$C$500;0);”G7”))

Esta fórmula irá retornar de forma indireta a célula que estiver

Em seguida clique em Gerenciador de Nomes e clique em Novo.

No novo nome criado digite primeiro e cole a fórmula =INDIRETO(“Imagens!”&SEERRO(“D”&CORRESP(Cálculos!$B$6;Imagens!$C$1:$C$500;0);”G7”))

Ela irá retornar o primeiro registro da tabela dinâmica.

Faça o mesmo para a segundo e terceiro, mudando apenas a célula pela qual está sendo buscado o nome na tabela de imagens.

Mudar Imagens Dinamicamente com Segmentação de Dados no Excel

Para mudar as imagens com segmentação de dados clique sobre uma das imagens da lista e copie ela.

Cole perto da tabela dinâmica com a segmentação de dados.

Clique sobre a imagem e em fórmulas digite =primeiro.

Isso fará com que seja modificado automaticamente as imagens conforme a segmentação selecionada.

trocar imagens excel 3

Download Planliha Trocar Imagens com Segmentação de Dados no Excel

Clique no botão abaixo para realizar o  download da planilha de mediana no Excel, com exemplo de dados:

Baixe a planilha

5/5 - (Total de avaliações: 1)

Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel

plugins premium WordPress