Não é nenhum segredo que a maioria dos usuários do Excel, ao criar tabelas em planilhas, pensa antes de tudo em seu próprio conforto e conveniência. Assim nascem lindas, coloridas e complicadas tabelas com “cabeçalhos” complexos, que ao mesmo tempo não podem ser filtrados ou ordenados, e é melhor nem pensar em um relatório automático com tabela dinâmica.
Mais cedo ou mais tarde, o usuário de tal mesa chega à conclusão de que “pode não ser tão bonita, mas pode funcionar” e começa a simplificar o design de sua mesa, alinhando-a às recomendações clássicas:
- um cabeçalho simples de uma linha, onde cada coluna terá seu próprio nome exclusivo (nome do campo)
- uma linha – uma operação concluída (negócio, venda, lançamento, projeto, etc.)
- sem células mescladas
- sem quebras na forma de linhas e colunas vazias
Mas se você fizer um cabeçalho de uma linha de um multinível ou dividir uma coluna em várias, é bastante simples, então a reconstrução da tabela pode levar muito tempo (especialmente em tamanhos grandes). Significa a seguinte situação:
Of | do |
Em termos de bancos de dados, a tabela certa geralmente é chamada de flat (flat) – é de acordo com essas tabelas que é melhor criar relatórios de tabelas dinâmicas (tabelas dinâmicas) e realizar análises.
Você pode converter uma tabela bidimensional em uma tabela plana usando uma macro simples. Abra o Editor do Visual Basic através da guia Desenvolvedor – Visual Basic (Desenvolvedor — Editor do Visual Basic) ou atalho de teclado outro+F11. Insira um novo módulo (Inserir - Módulo) e copie o texto desta macro para lá:
Sub Redesigner() Dim i As Long Dim hc As Integer, hr As Integer Dim ns As Worksheet hr = InputBox("Сколько строк с подписями сверху?") hc = InputBox("Сколько столбцов с подписями слева?") Application.ScreenUpdating = False i = 1 Set inpdata = Selection Set ns = Worksheets.Add Para r = (hr + 1) Para inpdata.Rows.Count Para c = (hc + 1) Para inpdata.Columns.Count Para j = 1 Para hc ns. Cells(i, j) = inpdata.Cells(r, j) Próximo j Para k = 1 Para hr ns.Cells(i, j + k - 1) = inpdata.Cells(k, c) Próximo k ns.Cells( i, j + k - 1) = inpdata.Cells(r, c) i = i + 1 Próximo c Próximo r End Sub
Você pode então fechar o editor VBA e retornar ao Excel. Agora podemos selecionar a tabela original (completamente, com um cabeçalho e a primeira coluna com meses) e executar nossa macro Desenvolvedor – Macros (Desenvolvedor — Macros) ou combinação de pressão outro+F8.
A macro inserirá uma nova planilha no livro e criará uma nova versão reconstruída da tabela selecionada nela. Você pode trabalhar com essa tabela “na íntegra”, usando todo o arsenal de ferramentas do Excel para processar e analisar grandes listas.
- O que são macros, onde inserir código de macro no VBA, como usá-los
- Criando relatórios com tabelas dinâmicas
- Ferramenta para redesenhar tabelas XNUMXD para tabelas planas do complemento PLEX