TOP

Tabelas não dinâmicas (Unpivot)

Descrição

As tabelas dinâmicas (pivottables) são uma ferramenta poderosa na análise de dados. No entanto, às vezes você precisa desdinamizar (unpivot) os dados dinamizados (também conhecido como "endireitar" ou desdinamizar os dados) para colocá-los em um formato de tabela regular para que todos os valores semelhantes estejam na mesma coluna. Isto é necessário, por exemplo, para criar um gráfico ou relatório novo ou modificado.

Você pode realizar esta conversão em Excel usando a ferramenta Power Query, mas não é rápida e nem muito conveniente. Vamos tentar uma abordagem diferente para distribuir dados de resumo sem Power Query.


Formulação do problema

Imagine que precisamos converter algum conjunto de dados de uma tabela dinâmica para uma tabela plana (Unpivot):

Tal tarefa é melhor resolvida com a ajuda de uma macro. Vamos escrever nosso próprio procedimento que será capaz de converter uma tabela cruzada (tabela cruzada) com dados em um formato de tabela regular (plano), o que nos permitirá novamente criar tabelas de resumo com dados alterados ou complementados.

Código VBA para o procedimento UnPivotTable

Abra o editor Visual Basic (Serviço - Macro - Editor Visual Basic), insira o novo módulo (Insert - Module) e copie o texto desta macro lá:

Sub UnPivotTable()
  'moonexcel.com.ua  
  Dim InVal    As Variant
  Dim OutVal() As Variant
  Dim j, k, i  As Long
  Dim NewSheet
  
  i = 1
  InVal = Selection.Formula
  ReDim OutVal(1 To Selection.Count, 1 To 3)
  
  For j = 2 To UBound(InVal, 1)
    For k = 2 To UBound(InVal, 2)
      If InVal(j, k) <> "" Then
        OutVal(i, 1) = InVal(j, 1)
        OutVal(i, 2) = InVal(1, k)
        OutVal(i, 3) = InVal(j, k)
        i = i + 1
      End If
    Next k
  Next j
  
  Set NewSheet = Worksheets.Add
  NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

Depois disso, você pode fechar o editor VBA, retornar ao Excel, selecionar a tabela de origem (completa, com o cabeçalho e a primeira coluna com países) e executar nossa macro através do menu Serviço - Macro - Macros (Tools - Macro - Macros) (ALT+F8) .

A macro irá inserir uma nova planilha na pasta de trabalho e criar nela uma nova versão reconstruída da tabela selecionada. Você pode trabalhar com essa tabela "com o programa completo", usando todo o arsenal de ferramentas Excel para processar e analisar tabelas grandes.

Artigos relacionados: