Tabelas Dinâmicas
por Robert Friedrick Martim
Desenvolvimento inteligente
Ao adquirir este eBook você tem o direito de lê-lo na tela do seu computador e de imprimir
quantas cópias desejar, desde que sejam para uso pessoal. É vetada a distribuição deste eBook,
mediante cópia ou quaisquer outros meios de reprodução, para outras pessoas. Se você recebeu
este eBook através de e-mail ou via FTP de algum site da Internet, ou através de CD de Revista,
saiba que você está com uma cópia pirata, não autorizada. Se for este o seu caso entre, em
contato com o autor através do e-mail rm@msofficegurus.com ou comunique diretamente ao
nosso site através do e-mail webmaster@juliobattisti.com.br.
Ao regularizar a sua cópia, você estará remunerando, mediante uma pequena quantia, o trabalho
do autor e incentivando que novos trabalhos sejam disponibilizados.
Visite periodicamente o site www.juliobattisti.com.br para ficar por dentro das novidades!
Desenvolvimento inteligente
Pré-requisitos
Para completar este curso, você precisa conhecer o ambiente de trabalho Excel 2003 e possuir
uma cópia do Excel 2007. Uma versão Trial pode ser baixada do site da Microsoft.
Neste módulo discutirei como utilizar os novos recursos da Tabela Dinâmica no Excel 2007.
Desenvolvimento inteligente
Quaisquer dúvidas referentes a este módulo podem ser colocadas diretamente no fórum Excel no
endereço www.juliobattisti.com.br/forum/
Comentários e sugestões para melhora do material podem ser enviados diretamente para o autor
no endereço rm@msofficegurus.com
Desenvolvimento inteligente
ÍNDICE ANALÍTICO
Introdução ....................................................................................................................................1
Bem-vindo a série “Como Fazer”...........................................................................................1
Antes de continuar ................................................................................................................1
Desenvolvimento inteligente
6. Formatação ........................................................................................................................ 53
6.1. Estilos de Tabela Dinâmica ........................................................................................ 53
6.2. Formatando campo..................................................................................................... 55
6.3. Layout do relatório de tabela dinâmica ....................................................................... 55
6.4. Preservando formatação ............................................................................................ 57
6.5. Modificando nome de campos .................................................................................... 58
Desenvolvimento inteligente
9.2. Tabulando e analisando dados de uma pesquisa de opinião: cenário 2 – tabulação por
cidade ......................................................................................................................... 93
Desenvolvimento inteligente
Tabelas Dinâmicas
por Robert Friedrick Martim
Introdução
Nas séries que serão escritas olharemos aspectos distintos do Excel 2007 de acordo com a
demanda do site Júlio Battisti (http://www.juliobattisti.com.br). A intenção principal é fornecer ao
internauta uma ferramenta que concentre a atenção na solução de um problema específico.
Neste módulo veremos como utilizar as novas ferramentas de Tabela Dinâmica no Excel 2007 e
como aplicá-las aos mais variados problemas encontrados no nosso dia-a-dia.
Antes de continuar
Sugestões serão sempre bem-vindas e esperamos que o leitor participe pro ativamente no
desenvolvimento do material aqui apresentado.
Finalmente, todo um esforço foi feito para assegurar que o material aqui apresentado está livre de
qualquer erro, mas no improvável evento de encontrar algo errado, por favor, não deixe de me
comunicar, pois terei prazer em revisar o material imediatamente.
Desenvolvimento inteligente
O novo Office mudou bastante a sua cara e para aqueles que se acostumaram com os antigos
menus o novo visual pode ser um choque tremendo. Não obstante, uma vez que você aprenda a
nova interface, você começará a ver os benefícios que ela nos traz.
O primeiro benefício é que a maioria dos comandos agora fica agrupada no “RibbonX” (Faixa de
Opções) e não enterrados em algum local obscuro do Excel. Além disso, o RibbonX é sensível ao
contexto e irá adicionar novas guias dependendo do que você esteja fazendo.
Como o RibbonX ocupa bastante espaço, quanto maior for a resolução de seu monitor melhor
será o benefício da Faixa de Opções:
Figura 1-1 Faixa de Opções em baixa resolução agrupa ainda mais os itens de um grupo
A figura acima mostra a Faixa de Opções com uma resolução menor. Note que o grupo que
usaremos (grupo Estilo) é compresso e, portanto, não é possível saber o que há nele até que o
mesmo seja expandido. Em uma resolução maior nós temos uma área bem mais visível da Faixa
de Opções e o grupo que usaremos é exposto:
Assim sendo, quanto maior for sua resolução maior será o benefício da Faixa de Opções.
Desenvolvimento inteligente
A ferramenta de formatação condicional pode ser rapidamente acessada na guia Início no grupo
Estilo conforme mostra a figura abaixo:
Note a pequena “seta para baixo” no “botão” de formatação condicional. Este pequeno botão nos
permite expandir as opções disponíveis no botão. Este “botão”, na verdade, funciona como os
antigos “menus popups” os quais expõem novos clicáveis os abrem novos clicáveis ou executam
algum tipo de comando:
Desenvolvimento inteligente
Antes de continuar, porém, abro um curto subtópico para discutir algumas novas questões do
Excel 2007. Estas novas questões irão lhe ajudar a compreender melhor a nova versão.
Vamos das uma rápida olhada nas novidades do Excel 2007 e seus benefícios (ou não benefícios)
para os usuários novos e antigos. Para facilitar a identificação, quebro a lista para que a mesma
possa ser encontrada a partir do índice analítico.
Faixa de Opções (ou RibbonX) é uma das primeiras novidades que qualquer usuário notará. A
grande vantagem da Faixa de Opções é que ele agrupa tarefas comuns e expõe os controles que
o usuário precisa para resolver um problema qualquer.
A Faixa de Opções é sensível ao contexto e a ela são adicionadas novas guias e controles
dependendo do trabalho que você esteja fazendo.
A grande desvantagem da Faixa de Opções é o espaço que ela ocupa. Portanto, quanto maior a
resolução de seu monitor mais você se beneficiará dela.
O novo Excel possui 1.048.576 linhas por 16.384 colunas, dando um total de mais de 17 bilhões
de células para o leitor “brincar” à vontade.
Para os que achavam 65.536 linhas por 256 colunas pouco, o choro pode terminar agora. O leitor
pode rapidamente checar o número de linhas e colunas utilizando o código abaixo:
Sub linhasColunas()
Cells(1, 1) = ActiveSheet.Rows.Count
Cells(1, 2) = ActiveSheet.Columns.Count
End Sub
Uma reclamação antiga do Excel era a possibilidade de apenas ordenarmos três campos, no
máximo. É bem verdade que podemos ordenar mais de três campos utilizando um método nada
ortodoxo e lento, contudo, o novo Excel nos permite ordenar até 64 campos simultaneamente.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 5
Desenvolvimento inteligente
Provavelmente, você se perderá na ordenação lá pelo quinto campo e terá que confiar no
resultado final, não obstante, a nova possibilidade é extremamente bem-vinda.
A nova formatação condicional, o assunto deste curso, está “show de bola”. Para aqueles que
amam formatação condicional e as usam para identificar tudo que é tipo de coisa no Excel, a nova
interface da FC está nota 1000.
No princípio pode parecer um pouco complexa, mas uma vez que você domine os novos
conceitos desta ferramenta você verá como ela é bastante ilimitada.
O Excel 2007 agora possui novas funções que resolvem muitos dos problemas que antes tiravam
o sono de muitos usuários como é o caso de soma condicional.
Permite visualizar o resultado de uma formatação antes que ela seja aplicada. Recurso muito útil
na hora de darmos o toque final ao nosso trabalho.
Para os usuários de Word que amam o layout de impressão, agora, ficou muito mais fácil formatar
a sua planilha com o Layout da Página.
Com os novos estilos de formatação ficou bastante simples dar aquele toque profissional ao seu
trabalho no Excel. Basta selecionar um dos vários estilos da galeria e aplicá-lo. Sem contar que
com a Visualização Dinâmica você verá o resultado antes de aplicar o estilo.
Estas são apenas algumas das mais variadas novidades do novo Excel. Infelizmente, o espaço
aqui é curto para discutir cada uma delas, mas acredito que os pontos acima dêem ao leitor uma
visão geral do que esperar da nova versão.
Desenvolvimento inteligente
Desenvolvimento inteligente
Nós podemos, por exemplo, organizar, subtotalizar, agrupar, etc, de forma simples e rápida
através de Tabelas Dinâmicas. Esta organização, subtotalização, agrupamento, etc, não se
restringe a dados contidos em uma planilha Excel. Uma tabela dinâmica pode utilizar dados de
banco de dados externo ou consultas pré-definidas. A importância desta característica se torna
evidente quando o total de registros excede o limite de uma planilha Excel.
Com o Excel 2007, o total de registros aumentou, mas mesmo assim devemos lembrar que o
Excel não é um banco de dados e não deve ser utilizado para esta finalidade.
O nome Tabela Dinâmica não faz jus ao nome original em inglês: Pivot Table (ou “Tabela
Pivotante”). A razão para este nome em inglês é tão singela quanto o nome: quando temos um
objeto complexo em nossas mãos, como um Cubo Mágico (Cubo de Rubik) nós o giramos de
várias formas analisando-o por diversos ângulos. Com uma tabela dinâmica, nós fazemos o
mesmo; porém, com uma massa de dados ao invés de um cubo.
Suponha, por exemplo, que você é responsável pelo almoxarifado e deseja criar um banco de
dados para controlar estoque. Você deveria utilizar o Access e posteriormente analisar os dados
no Excel, contudo, como o Excel é o mais popular entre os aplicativos do Office, ele acaba virando
um PPO (Pau Para toda Obra).
Se este é o seu caso ou você não tem acesso ao Access, então é importante que você conheça
bem as ferramentas que o Excel possui para que você possa tomar controle dos pontos fortes e
fracos do Excel. Principalmente em dominar os pontos fortes para tirar o melhor proveito do
aplicativo e conhecer os pontos fracos para que eles não causem danos ao seu trabalho.
Certamente que gravar os dados não resolve outros problemas ou responde outras perguntas
importantes sobre o seu estoque. Se você conhece os dados, você será capaz de construir
análises mais complexas e detalhadas sobre o mesmo. Você poderá fazer um controle maior
sobre o que sai e entra, efetivamente reduzindo custo e mantendo uma boa rotatividade de
produtos perecíveis. Você poderá criar uma análise comparativa por setor, produto consumido,
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
8 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
quem solicitou a baixa, com que freqüência alguém solicita uma baixa, cruzar dados entre setores,
solicitantes, produtos e época de baixas e compras, e uma pletora de outras perguntas complexas
que podem ser facilmente respondidas através de uma tabela dinâmica.
E se você acha que o exemplo acima é complexo para um simples almoxarifado, imagine uma
distribuidora com diversos escritórios espalhados pelo país? Como conciliar e analisar a
distribuição, as vendas por região e por vendedor? Como saber o percentual de vendas de cada
região em relação ao total da empresa como um todo? Ou como saber dentro disso tudo quem foi
o melhor vendedor e qual foi o produto mais vendido? Como cruzar todos estes dados por todas
as regiões do país e analisar cada detalhe?
Aqui, se você alguma vez criou uma consulta circular no Excel (uma consulta que retorna dados
dentro da própria pasta que funciona como a fonte de dados), você chegará à conclusão que ela
será incapaz de responder tantas perguntas simultaneamente. Você precisaria de diversas
consultas que analisassem cada situação e depois ficar como louco cruzando tais consultas para
chegar ao nível de detalhe que estou falando. Sem contar a redundância dos dados, pois você
estaria simplesmente filtrando dados dentro da planilha que já contém os dados! Já imaginou o
caos?
Se seu chefe pedisse uma média ponderada no cenário da distribuidora acima, você
provavelmente iria ficar careca tentando resolver o problema num mar de números. Com tabelas
dinâmicas talvez você até arranque uma meia dúzia de fios de cabelos, mas certamente não ficará
careca por causa disso.
1
Na maioria dos casos abreviarei Tabela Dinâmica para “TD”.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 9
Desenvolvimento inteligente
Os dados acima podem ser sumarizados em uma tabela dinâmica da seguinte forma:
Com a pequena tabela dinâmica acima podemos facilmente ver os totais para as vendas de cada
produto sem a necessidade de criarmos fórmulas mirabolantes para somar por produto. Contudo,
não temos os detalhes de cada venda. Aqui, podemos fazer algo similar ao que é geralmente feito
em um relatório.
Desenvolvimento inteligente
Se o nome do produto é o cabeçalho e sob tal cabeçalho vem listado cada total de cada venda
efetuada temos o seguinte cenário:
Aqui, temos no cabeçalho cada produto com a lista das vendas e o total geral de vendas por
produtos. O resultado é basicamente o mesmo que o anterior, pois estamos interessados no total.
Contudo, aqui, ainda temos os detalhes das vendas.
Para situações mais complexas, você precisará criar filtro ou consulta que reúna os dados críticos
para análise e utilizar a tabela resultante para criar a sua tabela dinâmica no Excel.
A tradução do inglês para o português talvez não faça jus ao original em inglês PivotTable.
Embora a tradução para Tabela Pivotante possa ser “feia” acredito que ela faça mais jus ao real
significado do que uma Tabela Dinâmica realmente seja.
Pivotante refere-se a algo que gira sobre um ponto fixo e é exatamente isso que os dados fazem
dentro de uma tabela dinâmica. Os dados giram sobre o eixo da tabela e você pode girá-los à
vontade sobre tal eixo.
Desenvolvimento inteligente
Esta aparente simplicidade nos fornece resultados extremamente complexos. Além disso, se os
dados em um formato não resultam no sumário que você deseja você pode simplesmente arrastar
o campo para outro local dentro da tabela para rearranjar os dados.
Em nossa tabela de dados também possuímos datas. Datas em tabelas dinâmicas têm papel
crítico, pois com as datas podemos agrupar dados para análise por períodos. Por exemplo,
poderíamos comparar as vendas mês a mês. Ou ano a ano. O tipo de agrupamento pode variar
com a necessidade.
Isso pode ser facilmente feito simplesmente arrastando o campo para a tabela:
Com o agrupamento por mês podemos rapidamente identificar que o produto A tem uma
constância maior nas vendas. Que em abril o único produto vendido foi o produto A e novamente
em julho.
Estes tipos de respostas não podem ser obtidos diretamente do conjunto de dados, pois o
resultado é unidirecional2.
E se você não gosta da forma como os resultados são apresentados, pela característica pivotante
da tabela dinâmica, você pode simplesmente mover um dos campos para outra área qualquer ou
removê-lo da tabela:
2
Embora seja possível criar uma fórmula matricial ou tabela para representar tal cenário.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
12 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
Em questão de segundos, você cria outra apresentação dos dados sem esforço algum. Agora,
junte a força de filtros com consultas bem organizadas com tabelas dinâmicas, e você tem uma
ferramenta de análise de dados extremamente poderosa.
Ao longo deste curso, você notará que não existe uma forma “correta” de se criar uma tabela
dinâmica. Tabelas dinâmicas são usadas para criar sumários que nos ajudam a interpretar os
dados. Como a tabela final é feita dependerá da necessidade individual, do tipo de análise sendo
feita, e principalmente de sua compreensão dos dados. Na verdade, eu diria que o mais
importante de tudo é conhecer os dados. Sem conhecê-los o seu trabalho será muito mais
complexo.
Esta é apenas uma introdução ao que é possível fazer com tabelas dinâmicas. A seguir apresento
os componentes de uma tabela dinâmica e o que cada um faz antes de entrarmos na real criação
das mesmas.
Mencionei antes que é possível simular um cenário de uma tabela dinâmica utilizando uma
fórmula matricial3 ou uma tabela. Apenas para matar a curiosidade, vejamos como isso é feito. O
conceito é relativamente simples, embora o procedimento possa ser extramente complexo
dependendo do tipo de dados e quantidade de dados que você esteja lidando.
Lembre-se que estou apenas dando um exemplo. Não utilize este método para efetuar cálculos
complexos, pois além de trabalhoso consome muito mais de processamento do que uma TD.
3
Caso o leitor não tenha conhecimento sobre matriciais, veja o curso no link:
http://www.juliobattisti.com.br/cursos/excelmatric/default.asp
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 13
Desenvolvimento inteligente
Na célula C25 nós inserimos a fórmula do cálculo que desejamos efetuar (neste caso a soma por
produto). Aqui, utilizo um formato geral similar a TD para facilitar a visualização.
Disponha os nomes dos produtos em uma coluna única (várias linhas por uma coluna) e defina o
critério (neste caso defini como sendo A na célula B23). Utilize o critério na fórmula para a soma
baseado no critério único.
Na nova janela que abrir, defina a célula de entrada da coluna como sendo B23;
Clique OK.
A figura acima mostra a caixa de entrada para a tabela. Após clicarmos em OK, a tabela será
preenchida com as somas por produto:
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
14 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
A tabela utiliza dois argumentos: linha e coluna. Neste caso, temos apenas coluna como
argumento da tabela. Os resultados são propagados para as demais células e obtemos o que
procuramos. Podemos também adicionar um somatório sob a tabela para criar o total geral:
Como podemos ver, obtemos exatamente o mesmo resultado que obteríamos em uma tabela
dinâmica.
Outra forma de efetuar os mesmos cálculos seria utilizando uma função de banco de dados, uma
fórmula matricial ou SOMASE. Por exemplo, abaixo utilizo a função SOMASE:
Desenvolvimento inteligente
Como as áreas são nomeadas, basta seleciona o nome do produto e as áreas de dados e arrastar
a fórmula para baixo.
Para a fórmula matricial complica um pouco, pois o leitor precisa compreender de multiplicação de
matrizes. O efetuar tal cálculo faríamos:
O resultado acima geraria uma matriz n x 4 (n linhas por 4 colunas, pois temos 4 produtos
distintos);
Transpomos tal resultado e o multiplicamos por 1 para obtermos uma matriz de zeros e
uns com uma dimensão 4xn (4 linhas e n colunas);
Multiplicaríamos esta matriz de zeros e uns pela matriz contendo os valores totais para
obtermos o que desejamos:
Obtemos mais uma vez o mesmo resultado, mas com um nível de complexidade muito maior.
Sem contar que o cenário aqui é simples. Imagine um cenário mais complexo com colunas,
múltiplas linhas, cabeçalhos, etc?
Desenvolvimento inteligente
Seria o completo caos tentar resolver tais questões. Sem contar com a imprevisibilidade. E se o
seu chefe resolve mudar tudo de posição?
Portanto, embora seja possível não é nem um pouco recomendável fazer algo tão complexo
utilizando métodos manuais.
O que vejo às vezes é a argumentação de que uma TD não retorna no formato desejado. Se não
retornar, não tem problema. Analise com a TD, depois copie e cole no formato desejado e mesmo
assim ainda será mais rápido, prático e consumirá menos recursos.
Não se apegue a detalhes que pouco ajudam na solução do problema. Ataque o problema de
frente e resolva-o. Depois, preocupe-se com questões de formatação e apresentação dos
resultados.
As informações contidas em uma tabela dinâmica não são atualizadas automaticamente, isto é,
caso ocorra uma mudança na fonte de dados esta mudança não será refletida em sua TD. Este
fato independe da localização dos dados, ou seja, os dados podem estar na pasta de trabalho ou
um servidor SQL remoto… dá no mesmo. Além disso, pressionar F9 (recalcular) não recalcula ou
atualiza a sua TD.
2. Clique no botão “Atualizar” sob a guia “Opções”. Note que a TD precisa estar ativa para
que esta guia esteja visível, ou;
3. Determine um intervalo para atualização nos casos de dados externos. Mais adiante no
curso veremos como acessar esta opção.
Desenvolvimento inteligente
No Excel 2003 o acesso era feito pelo menu “Dados”. No Excel 2007 o acesso é feito pela guia
Inserir conforme mostra a figura abaixo:
Como o acesso é feito por uma guia diferente da guia de formatação, você pode adicionar a
ferramenta à Barra de Ferramentas de Acesso Rápido (BAR). Para tanto, clique com o botão
direito do mouse sobre o botão “Tabela Dinâmica”. A opção de adição à BAR será exibida:
Uma vez que o botão tenha sido adicionado à BAR, o mesmo poderá ser acessado rapidamente
sem a necessidade de troca de guias:
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
18 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
NOTA:
A forma como você clica no botão determina qual elemento é inserido. Note que o botão “Tabela
Dinâmica” é, na verdade, um botão simples e um botão do tipo “Split”. No caso da figura acima o
botao adicionado ao BAR é o “spliButton” (botão split)
No Excel 2003, nós tínhamos uma barra de ferramentas que era sensível ao contexto do objeto.
No Excel 2007, nós temos algo similar denominado “tabset de extensibilidade”:
A figura mostra apenas parte de toda a faixa de opções para o tabset Ferramentas de Tabela
Dinâmica. O leitor deve estudar atentamente a posição de cada elemento dentro da guia.
Desenvolvimento inteligente
Como não existe um Object Model (OM) em VBA para lidar com a criação de tais elementos da
Faixa de Opções, nós utilizamos XML para tanto. O leitor precisará baixar o programa CustomUI
Editor (gratuito na Internet) para poder acessar o arquivo Excel 2007 e adionar o seguinte código
XML para customizar a Guia conforme exemplo acima:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<contextualTabs>
<tabSet
idMso="TabSetPivotTableTools">
<tab
id="rxtab"
label="Minhas Ferramentas de TD">
</tab>
</tabSet>
</contextualTabs>
</ribbon>
</customUI>
NOTA:
É importante lembrar que manter um arquivo Excel aberto no Excel 2007 ou aberto no CustomUI
Editor fará com que um dos dois perca as últimas alterações.
Desenvolvimento inteligente
No Excel 2007 a lista de campos da tabela dinâmica está mais inteligente e fácil de usar. Além do
formato padrão de visualização, podemos escolher entre quatro outros modelos diferentes de
visualização conforme é mostrado na figura abaixo:
Escolha campo Exibe todos os campos disponíveis para uso na tabela dinâmica.
Filtro de Relatório Área onde usamos o campo da seção de página da tabela dinâmica para filtragem
da tabela.
Rótulos de Coluna Área onde usamos o campo que pivotará os dados por coluna.
Rótulo de Linha Área onde usamos o campo que pivotará os dados por linha.
Desenvolvimento inteligente
Adiar atualização Adia a atualização do layout até que todos os campos tenham sido inseridos e o
do Layout botão “Atualizar” tenha sido clicado. Note que desmarcar esta opção desfaz o
layout criado com a opção marcada.
A caixa de diálogo de opções da tabela dinâmica mudou bastante, contendo agora um formato
que agrupa funções similares.
Desenvolvimento inteligente
Método 1
3. No primeiro grupo (canto esquerdo) chamado “Opções” clique sobre o botão de mesmo
nome
Método 2
1. Siga os mesmo passos do método 1, mas clique sobre a pequena seta do botão “Opções”
(não clique sobre a palavra). Um menu será expandido conforme Figura 3-8
Método 3
Desenvolvimento inteligente
Desenvolvimento inteligente
As explicações são basicamente o que você pode encontrar no próprio Ajuda do Excel e a melhor
forma de realmente aprendê-los é testar diferentes combinações com os dados que você possui.
A dica que posso dar é que você deve iniciar com um pequeno banco de dados ou planilha com
algumas informações e alguns campos ao invés de um banco de dados ou planilha enorme e com
diversos campos.
Isso facilitará a sua compreensão e visualização do que ocorre quando você cruza os dados. Com
um banco de dados ou planilha muito grande e muitos campos, certamente causará confusão
para o mais inexperiente, pois a tendência é entrar em pânico quando não se consegue fazer o
sumário desejado. Isso muitos vezes tem a ver com o próprio formato dos dados (como eles estão
gravados no banco de dados ou planilha e o tipo de relacionamento existente entre os dados) e
requer uma abordagem diferente para se chegar ao resultado esperado.
Para evitar um emaranhado de setas na figura eu omiti os itens os quais posso me referir sem a
necessidade de setas dentro da figura.
Desenvolvimento inteligente
Abaixo você encontra o significado de cada um destes elementos (nem todos os elementos
encontram-se na Figura 4-1):
Campos
Campos referem-se às categorias de dados de uma tabela dinâmica. No exemplo acima,
nomeProduto e Meses são os campos da tabela dinâmica. Meses é o campo de linha
(rótulo de linha) ao passo que nomeProduto é o campo de página (Filtro Relatório).
Campos podem ser os mesmos contidos na tabela fonte ou podem ser campos criados
pelo usuário a partir dos campos já existentes.
Item
Item refere-se a cada elemento dentro de um campo qualquer. Por exemplo, no caso
acima, as letras de A a D poderiam ser os itens do campo de coluna ao passo que os
meses de janeiro a julho poderiam ser os itens do campo de linha. Itens podem ser
expandidos e colapsados quando existem detalhes disponíveis para os mesmos (discutirei
isso mais adiante no curso). Observe que o ponto de interseção entre um item de linha e
um item de coluna é o sumário de dados para o cruzamento entre os campos de linha e
coluna para este item.
Desenvolvimento inteligente
necessariamente receber um valor numérico. Este campo irá agrupar os dados de diversas
formas. Você pode somar, contar, retirar média e desvios padrões, etc deste campo. Ou
ainda criar os seus próprios campos.
Seta suspensa
Seta suspensa é a pequena seta ao lado de um campo de linha, coluna e/ou filtro
utilizado para expandir os itens contidos sob tal campo. A seta suspensa é utilizada para
filtrar os itens que devem ser sumarizados no campo selecionado4:
Ao expandir RL (Rótulos de Linha, o qual contém a agrupamento dos meses), você pode
selecionar os meses que devem aparecer em sua tabela dinâmica.
4
Caso o layout do relatório esteja no Formato Compacto (Design Layout Layout do Relatório Mostrar em Formato Compacto)
voce precisa clicar com o botao direito do mouse sobre a seta suspensa para visualizar os campos filtráveis.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 27
Desenvolvimento inteligente
Para inserir uma tabela dinâmica é bastante simples (e já vimos isso anteriormente, mas
entraremos em outros detalhes agora). Mesmo sem selecionar os dados o Excel ainda é capaz de
determinar a área contendo os dados desde que a mesma esteja em um formato apropriado, isto
é, contenha cabeçalhos (nomes de campos), não possua registros nulos e seja contínua. Caso o
seu conjunto de dados possua registros nulos, selecione a área que contém os dados e siga as
instruções abaixo para iniciar o Assistente de Tabela Dinâmica:
Tipo:
Desenvolvimento inteligente
Determine se a tabela dinâmica deve ser inserida em uma nova planilha ou na planilha ativa. Caso
escolha a planilha ativa assegure-se que não há informações no caminho da tabela. Embora um
aviso seja emitido é possível substituir dados por erro. Geralmente, tenho preferência por uma
planilha nova.
Para todos aqueles que já usaram TDs no Excel 97-2003 a figura do Assistente é certamente
bem-vinda por várias razões. Por exemplo,você pode determinar a consolidação de várias áreas
de dados, pode criar uma TD ou GD, etc. Porém, no Excel 2007 quando nós inciamos o processo
não há mais tal Assistente. Não obstante, ele continua presente no Excel, embora escondido dos
olhos de todos.
2. Digite em seqüência as teclas Alt d a. Note que esta não é a mesma seqüência de
aceleração no Excel 97-2003.
Figura 4-3 Primeiro passo para criar a Tabela Dinâmica usando o Assistente
Desenvolvimento inteligente
Nesta primeira etapa, selecione uma das opções para a fonte de dados e para tipo (Tabela ou
Gráfico Dinâmico) antes de continuar:
Fonte de dados:
Banco de dados ou lista do Microsoft Office Excel: Especifica uma área de uma
planilha contida em uma pasta de trabalho Excel como sendo a fonte de dados;
Tipo de relatório:
3. Clique em “Avançar” para continuar ou “Concluir” para terminar. Sugiro “Avançar” para se
beneficiar do Assistente, principalmente se o leitor for iniciante.
Assumindo que o leitor clicou em “Avançar”, o próximo passo requer a seleção da área que
contém os dados na planilha. Caso a célula selecionada esteja dentro do intervalo de dados e o
intervalo esteja no formato correto o Excel é capaz de determinar sozinho o intervalo de dados:
Desenvolvimento inteligente
Clique em avançar para determinar o local de saída da TD. Caso já exista alguma tabela dinâmica
na pasta de trabalho o Excel avisará que ela já existe e se você deseja utilizá-la para construir
uma nova tabela. Caso o leitor clique em “Não”, o Excel para avança para o último passo:
Determine se a tabela dinâmica deve ser inserida em uma nova planilha ou na planilha ativa. Caso
escolha a planilha ativa assegure-se que não há informações no caminho da tabela. Embora um
aviso seja emitido é possível substituirmos dados por engano. Geralmente, tenho preferência por
uma planilha nova.
Este é o último passo do Assistente. O Assistente de layout deve ser acessado a partir das
opções da TD. Este assunto é coberto adiante.
Desenvolvimento inteligente
Vamos investir agora um tempo na análise das opções de uma tabela dinâmica.
Como podemos ver acima, as opções são separadas em cinco grupos: 1) Formato e Layout; 2)
Totais e Filtros; 3) Exibicao; 4) Impressão e 5) Dados.
Deste modo, quebrarei cada um destes grupos em tópicos para que possamos analisá-los
separadamente e maximizar a compreensão de cada item dentro de cada grupo.
A nossa primeira parada diz respeito às opções de layout e formatação. Todas as opções são
tratadas separadamente:
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
32 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
Mesclar rótulos
Mesclar rótulos nada mais é do que um mesclado de células. Observe o a figura abaixo:
Note que as células selecionadas são mescladas quando esta opção é ativada. A vantagem de ter
as células mescladas é que ao selecionar o espaço já selecionamos o valor ao invés de uma
célula. Na formatação padrão, nós devemos especificamente selecionar a célula que contém o
valor ao invés da área que contém o valor.
Abaixo e acima
Modifica a disposição dos campos dentro da tabela. Observe as duas figuras a seguir
A figura acima mostra a disposição “Abaixo e Acima” ao passo que a figura abaixo mostra a
disposição para o layout “Acima e Abaixo”:
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 33
Desenvolvimento inteligente
Utilize esta opção para mostrar um erro por você determinado ao invés dos erros internos como
#NÚM!, #VALOR!, etc;
Quando não há informação para uma linha/coluna o Excel deixará em branco o ponto onde um
valor “seria esperado”. A figura na próxima página mostra isso ocorrendo:
Utilize esta opção para determinar um valor para as células em branco. Apenas lembre-se de
manter consistência, isto é, se você está somando utilizando o valor zero. Note também que ao
inserir o valor “0” a TD pode ser interpretada como sendo o valor “zero” ao invés de “não há
dados”.
Desenvolvimento inteligente
Sob esta tabulação, o leitor poderá inserir totais por linhas e colunas, além de poder permitir
múltiplos filtros por campo e permitir a utilização de listas personalizadas na classificação dos
dados.
O leitor deve apenas lembrar que totais por linha totalizam os dados dispostos na horizontal ao
passo que os totais de coluna totalizam os dados dispostos na vertical.
Outra forma de ativar/desativar totais é acessar a guia Design (da guia de extensibilidade) e sob o
grupo Layout botão split Totais Gerais selecione a o total desejado.
Desenvolvimento inteligente
4.4.3. Exibição
Na parte de exibição, nós podemos executar vários comandos que nos permitem modificar o
método de exibição da tabela dinâmica.
A expansão para itens pode ocorrer através deste botão ou pelo duplo-clique (caso o botão não
esteja visível). Outra opção é acessar a TD e quando a guia de extensibilidade for ativada, vá até
a guia Opções grupo Campo Ativo Expandir Campo Inteiro:
Desenvolvimento inteligente
A exibição destes elementos é útil para impressão final de um relatório de tabela dinâmica.
Layout clássico
Exibe a TD no layout clássico, isto é, no layout pré-Excel 2007. Neste caso, note que em caso de
campos passíveis de extensão, o item oculto será exibido em outra coluna dentro da área de
rótulo de linha.
A vantagem da utilização deste layout é que podemos arrastar os campos para dentro/fora de
uma tabela dinâmica.
Desenvolvimento inteligente
4.4.4. Impressão
Sob esta guia você pode definir certas opções de impressão tais como impressão dos botões de
expansão e recolhimento de itens.
4.4.5. Dados
Utilize esta guia para definir opções de dados tais como se os dados devem ou não ser
atualizados na abertura, se os dados devem ser salvos com o arquivo, etc.
A decisão de salvar ou não salvar os dados com o layout de tabela determina como o Excel
manipula os dados, tamanho do arquivo, desempenho da tabela e desempenho de
processamento.
Para salvar os dados com o layout da tabela, deixe este botão selecionado. Feito isso, o Excel
salvará os dados juntamente com a pasta de trabalho. Aqui, existe uma demora no salvamento e
o arquivo inchará. Quanto mais informações de TDs estejam em “cache” e sejam salvas, maior
será o arquivo.
Desenvolvimento inteligente
A vantagem é que com os dados salvos no layout as informações da TD são carregadas mais
rapidamente e liberam memória, pois a mesma somente é utilizada quando algo muda na TD,
como relocação de campos dentro da TD.
Por outro lado, se não utilizamos esta opção o Excel deixa de salvar a informação junto com a
pasta de trabalho. Deste modo, o tamanho da pasta é reduzido se comparado com o salvamento
junto com o layout. O problema é que os dados precisam ser atualizados. Ao atualizar, o Excel
cria uma nova cópia dos dados em “cache”. Este processo é mais lento que o anterior.
Uma tabela unidimensional de campo único é a tabela dinâmica mais simples que você
encontrará. Neste tipo de tabela o usuário insere um campo de linha ou de coluna e o campo de
dados. Feito isso, o usuário poderá determinar como os dados são agrupados (soma, contagem,
etc).
Uma tabela bidimensional de campo único é a tabela dinâmica que contém ao menos um campo
de linha e um campo de coluna com os dados de ambos os campos sendo cruzados na área de
dados. Este é um dos motivos para se chamar tais tabelas de X-Tab (em inglês X-Tab é lido como
“cross tabulation” ou “tabulação cruzada”, em português).
O grande poder de tabelas dinâmicas é que podemos rapidamente cruzar os mais variados tipos
de informações rapidamente.
Como o nome sugere, se a tabela for unidimensional com múltiplos campos estamos observando
uma tabela que contém mais de um campo da tabela fonte no campo de linha ou no campo de
coluna da tabela dinâmica.
Por outro lado, uma tabela bidimensional com múltiplos campos é aquela que possui múltiplos
campos da tabela fonte tanto no campo de linha quanto no campo de coluna da tabela dinâmica.
Desenvolvimento inteligente
Boa parte das tabelas dinâmicas é feita em cima de tabelas bidimensionais, pois geralmente
queremos cruzar diversos dados simultaneamente de diversos campos de nossa fonte de dados.
Este tipo de tabela envolve um nível de complexidade extremamente elevado e em muitos casos,
você não conseguirá o resultado procurado na primeira tentativa (a menos que você conheça
muito bem os dados, sua estrutura e tenha muita experiência com tabelas dinâmicas). Desta
forma, se você se encontrar em dificuldades em criar uma tabela dinâmica complexa, não entre
em pânico, pois em muitos casos o trabalho é realmente frustrante de início.
Para adicionar um campo à tabela dinâmica é bastante simples no Excel 2007. No método normal
para o Excel 2007, tudo que você precisa fazer é selecionar o campo e o Excel fará a sugestão de
onde ele deve ir. Em seguida, você pode utilizar o mouse para arrastar os campos dentro da
janela Lista de Campos para reorganizá-los ou reordená-los.
Desenvolvimento inteligente
Na figura acima, para adicionar um campo à área de filtro (campo de filtro ou de página) tudo que
precisaríamos fazer é selecionar o campo, selecionar a opção na lista conforme mostra a figura e
clicar em Adicionar a. Mas isso mudou no Excel 2007. Ao invés disso, clique com o botão direito5
sobre o campo desejado para obter as mesmas opções:
5
Clicando com o botão esquerdo você obtém opções de filtro.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 41
Desenvolvimento inteligente
Para remover um campo da tabela é bastante simples. Simplesmente clique sobre o campo e
segure o botão do mouse. Em seguida, arraste o campo para uma área fora da tabela dinâmica
(utilizando o método clássico conforme já ensinado).
Desenvolvimento inteligente
Antes de tudo, lembre-se que no Excel 2007 não há mais lista. Ao invés disso, nós temos
“tabelas”. Esta nova ferramenta substitui as antigas listas e possui muito mais vantagens do que
as antigas listas. Para maiores informações sobre Tabelas no Excel 2007, veja o curso:
http://www.juliobattisti.com.br/cursos/ex2007tabelas/default.asp
Utilizar o Excel como fonte de dados é, sem dúvida, a forma mais comum e conhecida na criação
de TDs. Neste caso, os dados podem estar localizados:
Se a célula ativa está dentro da área de dados e esta área não possui descontinuidade de dados,
o Excel será capaz de determinar a área total de dados que será utilizada como fonte. Por outro
lado, se você deseja determinar a área de forma explicita você pode fazer o seguinte antes de
iniciar o processo de criação da TD:
Desenvolvimento inteligente
3. Crie um nome (que pode ser estático ou dinâmico) e digite o nome no campo
Tabela/Intervalo.
Caso o nome inserido seja inválido, o Excel exibirá uma mensagem de erro solicitando a sua
correção para que você possa continuar.
Até usamos dados da mesma pasta de trabalho; porém, podemos também utilizar dados de uma
pasta secundária. Primeira pergunta é: por que eu faria isso? O principal motivo para isso é
reduzir o custo de manutenção dos dados na mesma pasta, pois além do tamanho da pasta de
trabalho há também a questão de velocidade de processamento.
No caso dos dados estarem em uma pasta diferente, o processo de criação da TD é ligeiramente
diferente do processo já visto. Para criar esta TD, siga estes passos:
3. Navegue até a pasta de trabalho que contém os dados (use Alt+Tab para alternar entre os
documentos abertos ou outro método de sua preferência);
Desenvolvimento inteligente
4. Selecione os dados.
Alternativamente, você pode inserir o caminho completo da localização de sua pasta de trabalho
contendo os dados, por exemplo: '\Users\Robert
Martim\Desktop\TD_XL07_Tópico3.3.xlsx'!MinhaTabela
NOTA:
Às vezes, nós queremos criar uma TD em cima de dados filtrados. Caso os dados estejam
filtrados o Excel ignorará o filtro e todos os dados serão utilizados. Caso você queira somente os
dados, copie os dados filtrados para outra localidade e utilize-os como fonte para a TD.
Desenvolvimento inteligente
NOTA:
Em alguns casos você pode querer salvar a senha de conexão. Porém, este salvamento não é
recomendado. A razão é que o Excel não somente expõe toda a string de conexão, mas também
o nome de usuário e senha. A Figura 5-3 exibe a string de conexão (cadeia de conexão) para um
servidor SQL. O nome do usuário (sa) e a senha são exibidos:
Desenvolvimento inteligente
Para usar esta opção é necessário acessar o antigo Assistente de Tabela Dinâmica. O acesso
direto pelo Excel 2007 não nos permite criar uma TD com este tipo de consolidação.
Antes de tudo, é importante lembrar que os dados devem ser compatíveis com o formato
requerido pela tabela dinâmica. Caso contrário, nós não obteremos o resultado desejado. Uma
vez no formato correto, a criação da TD é mais simples do que pode parecer. Estude a figura
abaixo:
Desenvolvimento inteligente
o Criarei os campos de página Utilize esta opção para determinar quantos campos
de página devem ter. Você pode determinar entre zero (0) e quatro (4) campos.
No próximo passo, você deverá selecionar os intervalos de dados. Note que “Centro-
Oeste” e “Nordeste” encontram-se no topo de cada um dos intervalos de consolidação.
Voce não deve selecionar esta área, mas somente a área contendo os cabeçalhos de
campo e dados. Veja Figura 5-6 para exemplo de como selecionar o intervalo.
Desenvolvimento inteligente
Finalmente, defina onde você deseja que a nova TD seja criada (sugiro em uma nova
planilha).
Note que não possuímos os nomes dos campos, mas apenas a consolidação dos mesmos. No
caso do Filtro de Relatório, ao expandi-lo, você verá apenas Item 1 e Item 2 os quais se referem
aos itens Centro-Oeste e Nordeste respectivamente (campo “Região”).
Desenvolvimento inteligente
O nosso próximo passo é mudar os nomes dos campos padrões para o que realmente queremos.
Iniciaremos pelos Filtros de Relatório. Siga os passos abaixo:
Ao pressionar Enter, o Excel avisará que não existe o item digitado e sugerirá que o item seja
renomeado:
Clique “OK” para continuar e renomear o item. Repita os passos e renomeie o “Item 2” para
“Nodeste” bem como “Página 1” para “Região”. Ao final da renomeação, você terá o resultado
como segue:
Desenvolvimento inteligente
Em seguida, nós renomearemos os campos. Na lista de campos, clique no campo que deseja
renomear e selecione a opção “Configurações do Campo…”:
Desenvolvimento inteligente
No caso acima, o campo selecionado é “Linhas” o qual deve ser modificado para “Cidade”. Ao
terminar de renomear todos os campos (exceto o de colunas que não terá efeito algum para este
exemplo), você terá o seguinte cenário:
Como última opção da lista de fonte de dados nós temos como utilizar outra TD ou Gráfico
Dinâmico (GD). No Excel 2007, você pode criar uma TD/GD utilizando os seguintes métodos:
Desenvolvimento inteligente
O motivo para usar outra TD/GD como fonte de dados? Uma TD/GD baseada em outra usa
menos memória. Simples assim.
Desenvolvimento inteligente
6. Formatação
Neste tópico discutirei a questão de formatação de uma tabela dinâmica. A formatação é um ponto
importante, pois é através dela que nós realçamos pontos dentro da tabela, etc.
Formatação é uma parte complexa, pois cada indivíduo tem gosto diferente. Portanto, este tópico
não estará focado em “como-fazer-a-tabela-mais-bonita-do-planeta”, mas estará focado nas
ferramentas que o leitor precisa para criar a formatação que desejar.
Aqui, não discutirei questões básicas como “onde modificar cor de letra”. O que faremos é
aprender a formatar uma TD. É assumido que o leitor sabe onde formatar texto, linhas, fundos,
etc.
O Excel 2007 vem com um número de estilos prontos para aplicação em uma tabela dinâmica.
Além disso, você pode criar a sua própria formatação e/ou estilo. Por questão de praticidade e
rapidez, eu prefiro os estilos prontos aos meus próprios. Não obstante, há empresas que, por
motivos de identidade corporativa, utilizam estilos próprios.
Um estilo visa controlar vários aspectos visuais, entre eles (não somente de uma TD/GD mas de
qualquer outro objeto no Excel):
Fonte: define o tipo de fonte a ser utilizado em toda a TD/GD ou em elementos específicos
do objeto que receberá o estilo. Voce pode definir tamanho, cor, estilo (negrito, itálico,
sublinhado, etc), estilo de fonte, etc
Bordas: define o estilo de bordas para linhas horizontais e verticais utilizadas para
envolver a área onde será aplicada ou elemento que receberá a aplicação
Fundo: determina cores de fundo bem como padrões para o fundo do elemento em
questão
Desenvolvimento inteligente
Alternativamente, você pode abrir a caixa de definição de estilos (Estilos de tabela dinâmica
Novo estilo de tabela dinâmica…) onde você poderá definir o estilo para os mais variados
elementos da tabela dinâmica:
Desenvolvimento inteligente
Definir como estilo rápido de tabela dinâmica para este documento: define como
estilo padrão para todas as novas TDs para a pasta de trabalho.
Para modificar o estilo criado basta retornar à galeria de estilos e clicar com o botão direito sobre
o estilo personalizado. Para os estilos internos nós podemos defini-lo cmo padrão, copiar etc:
Para formatar um campo é bastante simple. Você pode acessar a configuração do campo:
Direto na tabela: Clique com o botão direito sobre o campo e escolha a opção
“Configurações de campo”.
Sob a guia “Opções”, grupo “Campo Ativo”: Clique sobre o campo desejado, selecione
a guia “Opções” grupo “Campo Ativo” e clique em “Configurações de campo”.
O Excel oferece três tipos de layouts distintos para a sua tabela dinâmica. Estes podem ser
acessados sob a guia Design (presente na guia de extensibilidade “Ferramentas de Tabela
Dinâmica”).
Desenvolvimento inteligente
Formato compacto: Este layout requer o mínimo de espaço para a sua TD. Figura 6-4
mostra o modelo de formato compacto. Este formato oculta botão de “Lista Suspensa” para
o segundo e subseqüente campos de linha.
Desenvolvimento inteligente
Ao aplicar uma formatação diretamente nos elementos de uma tabela dinâmica, ao atualizarmos a
TD, a formatação é revertida para a formatação padrão aplicada. Para manter o formato aplicado
abra a caixa de opções da tabela dinâmica e marque a opção “Preservar a formatação da célula
ao atualizar”.
É importante notar que elementos que pertencem ao mesmo campo podem ser formatados
simultaneamente desde que eles tenham sido selecionados. Para selecionar tais elementos vai
depender do cursor do mouse:
Desenvolvimento inteligente
Com o cursor apontando para baixo, conforme figura acima, os elementos do campo da linha
(Região) serão selecionados como mostra a área sombreada.
No campo “Nome Personalizado”, defina o nome que você deseja dar ao campo em questão.
6
Caso a área de dados possua mais de um campo o duplo-clique não funcionará. Para modificar o nome do campo clique com o botão
direito sobre o campo e escolha a opção “Configurações de campo”. Utilize este método para modificar campos também.
7
Caso a TD esteja em um formato de relatório, o duplo-clique sobre a área de dados causará a criação de uma planilha nova em forma
de uma tabela-relatório.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 59
Desenvolvimento inteligente
Neste grande tópico veremos como trabalhar com campos em uma tabela dinâmica.
Primeiramente, investiremos um tempo na construção de tabelas com múltiplos campos em linha
e/ou coluna.
Trabalhar com campos de linha é bastante simples. Iniciaremos com a adição de um campo de
linha mais o campo de dados da planilha deste tópico:
Nós temos aqui uma tabela simples unidirecional, isto é, uma TD contendo um campo de linha
mais o campo de dados.
Caso haja uma necessidade de maior detalhamento, nós podemos adicionar mais um campo à
área reservada para as linhas conforme mostra a figura a seguir. Note que a disposição dos dados
é em forma de relatório e, portanto, podemos expandir ou colapsar um determinado item dentro do
campo:
Desenvolvimento inteligente
Conforme já dito a expansão total acima pode ser colapsada/expandida conforme a necessidade,
bastando apenas clicar nos botões de mais (+) e menos (-):
Agora que possuímos estes dois campos o que mais podemos fazer? Clique com o botão direito
sobre o campo Região e selecione a opção Configurações do campo. A caixa de diálogo do
campo da TD será aberta:
Desenvolvimento inteligente
Na guia Subtotais e Filtros nós podemos definir o tipo de subtotais que desejamos trabalhar. Por
exemplo, dependendo do tipo de dados, o subtotal automático será Soma ou ContNúm. Por outro
lado, você pode selecionar “Personalizados” e escolher a função para agregar os seus dados.
Desenvolvimento inteligente
o Exibir subtotais no início de cada grupo Subtotais serão exibidos cada vez
que um grupo é modificado.
Inserir linha em branco após cada item Novamente, faz exatamente o que está
escrito: insere uma linha em branco após cada item de um grupo;
Inserir quebra de página após cada item Esta opção de impressão permite colocar
quebras de página nos itens do campo selecionado.
Vejamos agora os itens de subtotalização que aparecem na caixa de edição do campo da TD.
Ao criar uma tabela dinâmica o Excel adicionará totais por linhas ou colunas (ou ambas se
desejar). O tipo de total poderá variar dependendo do tipo de dado na área de dados. Por
exemplo, se todos os dados forem textos, então os mesmos são contados automaticamente ao
passo que valores numéricos são somados.
É importante salientar que um valor diferente na área de dados determinará o total adicionado
(contagem ou soma). Por exemplo, se existirem 999 valores numéricos e um de texto, a contagem
tem precedência sobre a soma:
Desenvolvimento inteligente
Embora estes dois sumários sejam “padrões”, ainda é possível determinar outros tipos de
sumários. A figura acima mostra algumas das opções de subtotalização. Você pode selecionar
mais de uma função para personalização e o campo de dados será duplicado para exibir a nova
subtotalização.
Nesta figura nós possuímos a soma total por região e a média por região. Porém, note que a
média não é entre as cidades, mas entre todas as observações para o Centro-Oeste, isto é, a
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
64 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
média é entre toda a soma para a região (R$4.135.308) divida pelo total de observações (648)
para a região.
Os subtotais que adicionamos anteriormente são valores absolutos, porém suponha que você
queira saber os valores relativos, isto é, o que você deseja saber é a proporção de cada valor em
relação ao total.
Continuando com os dados e exemplo do tópico anterior, vejamos o nosso cenário inicial “normal”
(“normal” é a opção inicial de apresentação do sumário):
A soma total é o nosso 100% e cada uma das somas para as regiões brasileiras representa um
percentual do total. Poderíamos efetuar o cálculo no lado externo da TD, porém este não seria o
cenário ideal:
Desenvolvimento inteligente
Se os valores em linha forem modificados teremos erro no cálculo. Por outro lado, se houver
mudanças na coluna (adição de um campo de linha ou coluna), a TD será movida para a direita
sobrescrevendo os valores (o usuário será alertado antes) calculados.
Como estes cálculos não fazem parte da TD eles são sensíveis a modificações externas. A
solução é adicionar o cálculo diretamente na TD.
Para modificar este campo, abra a configuração de campos para o campo Soma do Total.
Quando a janela abrir clique em Opções para expandir as opções do campo:
Desenvolvimento inteligente
No total são 9 formas diferentes de apresentar os dados (incluindo a forma normal). No exemplo
acima, estamos interessados no percentual do total (% do total). Selecione e aplique esta opção:
O exemplo acima pode ser expandido para levar em conta cenários mais complexos. Vejamos
como complicar um pouco a nossa análise.
O nosso conjunto de dados possui um campo de categorias o qual pode ser utilizado em nossa
análise. Suponha que desejamos saber o somatório para cada região dentro de cada categoria.
Também desejamos saber o percentual que cada região representa para cada categoria. O nosso
cenário inicial é mostrado abaixo:
Desenvolvimento inteligente
O próximo passo é adicionar os dados. Aqui, acrescente o campo Total duas vezes na
área de dados. Assim, obteremos a figura inicial deste tópico. Caso o Excel adicione o
campo “Total” como rótulo de “ Valores” da coluna, mova o campo de rótulo para a área
de linha. A figura da direita abaixo mostra como a configuração dos campos deve ficar (a
figura da esquera é a sugestão padrão do Excel):
Modifique o rótulo para os campos da área de dados para Soma por categoria e para %
Regional por categoria. A nossa TD agora terá o seguinte layout:
Desenvolvimento inteligente
Os totais acima são para colunas, mas o leitor pode modificar para mostrar os totais por linha, por
exemplo.
7.3. Utilizando data base para comparar valores (gastos de um trimestre base comparados
com outro)
Este exemplo pode ser expandido para outros cenários tais como comparações entre anos, entre
meses, etc.
Desenvolvimento inteligente
Comparar o desempenho dos trimestres seguintes ao trimestre base (neste caso será o
primeiro trimestre, mas o trimestre base pode ser qualquer um).
Para iniciar, vamos criar a parte básica de nossa TD. Siga os passos abaixo:
A nossa TD agora terá o seguinte visual (a imagem abaixo mostra apenas parte dos dados):
Agora que já possuímos a parte básica, precisamos agrupar os dados por trimestre e mostrar os
dados apenas para a região que desejamos analisar. Além disso, precisaremos repetir o total para
efetuar a nossa comparação. Para este novo estágio, siga os passos abaixo:
Na nova janela que abrir, selecione a opção Trimestre conforme mostra a figura:
Desenvolvimento inteligente
O próximo passo requer a adição do campo Total à área de dados (desde modo teremos os
dados repetidos) e o novo visual da TD será:
Desenvolvimento inteligente
Modifique os rótulos dos totais para Soma do total e % comparativo (base Trim1).
Para efetuar a última mudança em nossa TD para mostrar o percentual comparativo entre os
trimestres tendo como base o primeiro trimestre, siga os passos abaixo:
Desenvolvimento inteligente
Como o trimestre base é o primeiro, este item estará vazio conforme mostra a figura acima. O
cálculo efetivamente feito pelo Excel é a divisão do segundo (e terceiro) trimestre pelo primeiro
trimestre. Do resultado subtraímos 1. Por exemplo, a diferença para o segundo trimestre é
calculada como segue:
1.640.357, 70
1 3, 72%
1.581.582, 70
O mesmo cálculo acima é feito para o terceiro trimestre e obtemos -42,25% de diferença em
relação primeiro trimestre. Em outras palavras, as vendas são 42,258% menores do que as
apresentadas no primeiro trimestre.
Já vimos como efetuar uma comparação absoluta e como efetuar uma comparação percentual. O
nosso próximo objetivo é efetuar uma comparação relativa.
Uma comparação por índice é similar à comparação percentual, porém o Excel nos fornece a
opção de índice para este tipo de comparação e é exatamente isso que faremos.
A grande questão deste tipo de comparação é a interpretação dos resultados. Como estamos
lidando com o cruzamento de dados, isso implicaria que um índice muito elevado em uma linha
indicaria que ele é extremamente importante para o item da coluna.
8
Note que a TD exibe -42.25. Aqui o ponto é usado para separar o decimal. Isso ocorre, pois o meu sistema
está configurado para o inglês britânico onde o decimal é separado com o ponto ao invés de vírgula.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 73
Desenvolvimento inteligente
A figura a seguir mostra o resultado final deste tipo de comparação. Vejamos primeiro o que o
resultado significa antes de criamos a TD utilizando índices:
Todos os itens de nossa tabela possuem um índice bastante similar (indicando uma importância
balanceada). Na linha TELEFONIA nós vemos que o índice para o Sul é de 0,97 ao passo que
para o Centro-Oeste este mesmo índice é de 1,21. Este resultado implica que telefonia tem uma
importância menor nas vendas para o Sul ao passo que a sua importância é maior para o Centro-
Oeste.
Agora que o leitor já compreende como o cálculo é feito e como interpretar o resultado, vejamos
como modificar uma TD:
Desenvolvimento inteligente
Até o momento aprendemos diversas formas de trabalhar com campos em uma tabela dinâmica
manipulando os resultados finais.
Não obstante, os cálculos efetuados até o momento são resultados de funções internas do Excel.
Contudo, além destas mais variadas opções, nós podemos criar nossos campos calculados os
quais são utilizados pela TD.
Vejamos, primeiramente, o que é um campo e item calculado antes de partirmos para a criação
dos mesmos.
Antes de tudo, o que é um campo ou item calculado? Um campo calculado não é a mesma coisa
que um item calculado, portanto precisamos defini-los separadamente:
Campo calculado
Um campo calculado nada mais é do que um novo campo. Porém, este novo campo é criado
através de um cálculo entre dois ou mais campos existentes em nossa tabela dinâmica.
Pegue, por exemplo, os campos “Total” e “Qtd Vendida”. Sabemos que ao inserir este dois
campos na área de dados obtermos um somatório dos totais e obteremos um somatório das
quantidades. Supondo que tais somatórios sejam por cada região brasileira, se nós dividirmos o
Total pela Qtd Vendida nós obtemos um retorno médio por unidade vendida por região.
Desenvolvimento inteligente
4.135.308
R$1.354,51
3.053
Esta é a nossa média por unidade vendida. Obviamente que tal cálculo poderia ser feito em um
novo campo em nossa base de dados, contudo isso é desnecessário. Utilizando um campo
calculado nós podemos rapidamente fazer isso.
Item calculado
Item calculado refere-se ao cálculo entre itens de uma tabela dinâmica. Imagine o cenário aonde
nós possuímos dois campos em uma linha (digamos o campo Região e o campo Categoria). O
primeiro campo agrupa o segundo, contudo nós desejamos agrupar algumas categorias para
consolidação.
Sendo assim nós poderíamos agrupar as categorias Informática, Telefonia e TVs Plasma e LCD
em uma grande categoria denominada “eletrônicos”. Esta nova categoria nada mais é do que o
nosso item calculado.
Desenvolvimento inteligente
Como podemos ver, agora possuímos os três itens anteriores em um único onde o valor
representa a soma de cada um dos itens determinados.
Agora que o leitor já sabe o que um campo e um item calculados significam, vejamos como criar
tais campos e itens e aplicá-los à nossa TD.
Desenvolvimento inteligente
Voltemos ao exemplo da introdução aos campos calculados. O nosso cenário inicial é dado pela
figura a seguir. O que desejamos saber é média unitária. Nós já possuímos o total das vendas e o
total da quantidade vendida.
Para inserir o campo calculado da média por unidade vendida, siga os passos abaixo:
Desenvolvimento inteligente
Ao clicar na opção Campo calculado, a caixa de diálogo do campo calculado será aberta. Aqui,
precisamos determinar a nossa fórmula. A figura abaixo mostra o novo campo já configurado:
Obtemos, assim, o nosso primeiro campo calculado. O nosso próximo problema é adicionar o item
calculado. Para que isso seja possível, os itens do campo não podem estar agrupados. Caso os
mesmos estejam agrupados (ou os dados venham de uma TD onde os itens estejam agrupados),
é necessário desagrupar os dados antes de continuar.
Para inserir o item calculado agregando os itens discutidos no tópico, siga os passos abaixo:
Desenvolvimento inteligente
O Excel é capaz de reconhecer o campo onde podemos efetuar o cálculo e já abre a janela
sugerindo qual campo utilizar:
Tudo que precisamos fazer é adicionar o nome do campo e a fórmula (neste caso uma simples
soma) conforme mostra a figura anterior. Clique OK para terminar.
Desenvolvimento inteligente
O qual não é exatamente o que desejamos tendo em vista que agrupamos três itens em um só.
Sendo assim a soma total e para cada região terá os três itens adicionados também, como se os
mesmos fizessem parte de uma nova categoria. O que precisamos fazer é remover estes itens.
Para tanto, clique na seta do menu suspenso9 da categoria e remova os itens consolidados:
Ao clicar OK, os campos serão filtrados ficando somente a consolidação e os campos não
consolidados. Neste ponto, o recálculo da TD é feito e os valores corretos são mostrados:
9
Caso o menu suspenso da Categoria não esteja visível, clique com o botão direito sobre o menu suspeso para ativar a categoria ou
mude a visualização para modo Tabular (Design Layout do Relatório Mostrar em Formato de Tabela).
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 81
Desenvolvimento inteligente
Chegamos ao final da criação de campos e itens calculados. Vejamos agora como removê-los da
lista de campos.
Para remover um campo ou item calculado é bastante simples. Acesse a caixa de diálogo de
criação de itens/campo calculado. Na caixa de combinação Nome selecione o nome do
campo/item e clique em Excluir:
Desenvolvimento inteligente
O leitor deve estar atento ao fato de que caso o campo esteja sendo usado o mesmo será
removido da TD. Isso ocorre porque o mesmo não está mais disponível na lista de campo. Caso
um novo campo calculado com o mesmo nome e característica seja criado, o mesmo será
novamente mostrado na TD.
Desenvolvimento inteligente
Outra questão de ordenação diz respeito à apresentação. O Excel automaticamente sugerirá uma
ordem de apresentação dos itens em uma tabela dinâmica. Não obstante, um item pode ser mais
importante que outro e o que realmente queremos é que o item importante fique em destaque no
topo da lista.
A figura abaixo mostra a ordem padrão (neste caso, alfabética) dos itens do campo Categoria:
Supondo que o item calculado Outros deva vir no topo da lista de itens, nós podemos facilmente
rearrumar a ordem os itens:
Desenvolvimento inteligente
Desenvolvimento inteligente
Além das facilidades que vimos até o momento, podemos utilizar a ferramenta de “Top 10” ou “os
10 Primeiros” para determinar o grupo que possui os 10 maiores valores em nossa lista.
Embora o nome oficial seja “10 Primeiros”, isso não quer dizer que só possamos filtrar os 10
maiores valores. Na verdade, não somente podemos determinar quantos valores, mas também a
ordem, isto é, poderíamos determinar os 10 menores valores em nossa TD.
Para filtrar a lista para os 10 maiores ou menores valores, siga os passos abaixo:
Desenvolvimento inteligente
10
Figura 7-40 O primeiro maior valor por região da TD
10
Note que o filtro é aplicado de acordo com o campo selecionado. Neste caso, o campo (item) usado é o
de loja.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 87
Desenvolvimento inteligente
Caso o leitor queira utilizar algo similar é preciso utilizar o Excel Services.
Desenvolvimento inteligente
Os dados que utilizaremos neste estudo de caso são oriundos de um banco de dados Access. O
objetivo não é ensinar Access, portanto a criação de consultas no Access não será tratada.
Ao exportar os dados do Access para o Excel teremos algo como mostra a figura abaixo:
Note que as respostas são colhidas como VERDADEIRO ou FALSO para todas as respostas
possíveis (de R1 a R6). Como texto é contado, o primeiro passo requer a transformação destes
valores para valores numéricos.
Desenvolvimento inteligente
O nosso objetivo agora é contar quantas vezes ocorrem as respostas para as opções R1 a R6.
Uma solução seria aplicar um filtro automático e, utilizando a função SOBTOTAL, somar cada
uma das colunas:
Não há nada de errado com esta abordagem a não ser o fato de ser lento e passível de erro. Em
momentos como este a solução mais rápida e segura é utilizar uma tabela dinâmica.
Saber o percentual que cada contagem representa para uma pergunta (No caso acima, o
total geral por pergunta é de 48 respostas ao passo que o número de respostas para
opção R1 é 16. Portanto, 16 representa 34,78% do total)
Desenvolvimento inteligente
Vejamos como chegar ao resultado já mostrado. Cada passo é descrito abaixo seriatim:
A primeira parte está pronta e sua TD deve ser algo similar à figura abaixo (o nome do campo de
dados pode ser diferente tendo em vista que eu os renomeei):
11
Figura 9-5 Primeira parte da tabulação da pesquisa
A primeira parte de nossa TD está pronta. O próximo passo é adicionar um campo para calcular o
total por pergunta e colocar nossa TD em um formato tabular. Seguindo a numeração:
4. Adicione um campo calculado para retornar o total por pergunta. Para tanto, siga os
passos:
c. Na janela que abrir, determine a fórmula como segue (escolha um nome de sua
preferência):
11
O rótulo de valores se encontra na área de linha.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 91
Desenvolvimento inteligente
Figura 9-6 Determinando o campo para calcular o total por linha (por pergunta)
6. Passe o rótulo de valores da área de linha para a área de coluna (por padrao, no Excel
2007, o rótulo já estará na área de rótulos de coluna.
Terminada esta parte, nós teremos a tabulação por cada pergunta e opção de resposta no estilo
“tabular”.
Desenvolvimento inteligente
Finalmente, nós precisamos adicionar os percentuais. Como havia dito, isso pode ser feito
manualmente ou através de um campo calculado. Por agora, faremos no estilo campo calculado.
Mais para o final, mostro o motivo para se escolher esta opção ao invés de cálculo externo:
10. Formate esta área para percentual mostrando duas casas decimais.
Desenvolvimento inteligente
12
Figura 9-10 Resultado final da tabulação
Terminada esta parte, nós teremos a tabulação por cada pergunta e opção de resposta no estilo
tabular.
Podemos agora utilizar tais resultados em gráficos ou fazer um sumário das respostas dadas.
Vejamos agora um segundo cenário em cima da mesma pesquisa, mas utilizando um consulta
diferente no banco de dados.
9.2. Tabulando e analisando dados de uma pesquisa de opinião: cenário 2 – tabulação por
cidade
No cenário anterior fizemos a tabulação global, isto é, não nos preocupamos em “quebrar” mais os
dados. Porém, pesquisas são feitas assim: determinadas por sexo, idade, localidade, etc. Todas
estas categorias são eventualmente analisadas individualmente para comparação com a análise
global.
Todas estas comparações são relevantes em uma pesquisa. O intuito deste exemplo não é
comparar com o anterior, mas apenas fazer uma nova análise a qual introduz o elemento “cidade”.
12
Caso o relatório esteja exibindo “Soma de R1”, etc, acesso o modo clássico de AutoFormato pressionando Alt → F A. Depois,
selecione um dos formatos de relatório.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
94 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
A figura abaixo mostra o nosso objetivo intermediário. Aqui temos apenas o “hole count”
(contagem de respostas) para cada cidade em questão. O formato final é similar ao anterior em
visual, mas diferente na parte estrutural:
Após a adição dos campos, obter o resultado acima é relativamente simples. Porém, veremos
como o Excel “pivota” a área de dados para mostrar as opções como colunas (campos).
Desenvolvimento inteligente
Ao terminarmos o primeiro passo nós teremos os dados em linha, o que causa uma expansão
exagerada da TD para baixo. Se o leitor deseja formatar a TD manualmente, nós precisamos
modificar a disposição dos dados (das opções de resposta). Para tanto, continue como segue:
5. Clique sobre o rótulo Data (“dados” em inglês) o qual representa o campo de dados e os
seis campos das opções e segure o botão do mouse;
6. Usando o modo clássico de exibição, arraste este campo para cima da coluna Total
conforme mostra a figura e solte o botão do mouse;
Note que a pequena figura do mouse mostra a área sendo trabalhada (área de dados em azul).
Uma vez que tenha soltado o campo a TD será redimensionada como segue:
Esta é forma que o Excel utiliza para “pivotar” os dados quando escolhemos uma opção de
formatação automática.
Desenvolvimento inteligente
A figura abaixo mostra o mesmo resultado acima utilizando o modelo de autoformatação para
relatório 2 (para acessar o modo clássico de AutoFormatação pressione Alt F A):
Estamos prontos agora para adicionar campos calculados e fazer as comparações conforme
ensinado antes. Caso o leitor queira, é possível pivotar este resultado para o resultado do tópico
anterior. Ao arrastarmos (modo clássico de exibição) o campo Cidade para a área de filtro:
Com os dados na área de filtro nós teremos os totais para as perguntas na área de dados e
podemos rapidamente filtrar o resultado por cidade, evitando, assim, a criação de uma TD extra (a
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 97
Desenvolvimento inteligente
TD criada no tópico anterior a este). Nós temos em uma única tabela os dois cenários faltando
apenas adicionarmos os campos calculados do tópico anterior:
Ao escolhermos uma cidade, nós obtemos rapidamente a análise para a mesma, facilitando a
comparação com o total:
O leitor pode agora adicionar os campos calculados e efetuar as comparações conforme desejar.
Desenvolvimento inteligente
É neste momento que VBA se torna imprescindível, pois ele nos possibilita maximizar a criação de
TDs quando a tarefa é repetitiva.
Além disso, podemos utilizar objetos de uma TD apenas para extrair certos resumos para uso em
um relatório no Word ou PowerPoint e não queremos perder tempo repetindo a mesma tarefa.
Independentemente de qual seja o uso, acredito que seja de máxima importância estarmos por
dentro de como utilizar o VBA em cima de TDs. E este tópico é exatamente isso.
Para gravar uma macro é bastante simples, vá até a guia Desenvolvedor grupo Código
Gravar macro:
Desenvolvimento inteligente
Com a janela de gravação de macros aberta, digite o nome de sua macro, determine se há ou não
uma tecla de atalho, determine o escopo da macro (onde ele deve ser armazenada) e coloque
uma descrição para a mesma.
Muitos usuários de Excel não sabem que é possível visualizar em tempo real a gravação da
macro. Para tanto, abra o VBE antes de iniciar a gravação pressionando Alt+F11. Coloque a
janela do Excel ao lado da janela do VBE conforme mostra a figura:
Desenvolvimento inteligente
Neste ponto, qualquer modificação efetuada na planilha será imediatamente refletida na janela do
VBE.
Com relação à gravação de macros é basicamente isso que o leitor precisa saber. Uma vez que a
macro tenha sido gravado, o próximo passo é a limpeza de linhas desnecessárias. Note na figura
acima que a rolação da janela também foi gravada, contudo tal comando é irrelevante para o
trabalho em uma TD e o mesmo deve ser removido.
Não entrarei em detalhes sobre limpeza de gravação de macro, pois a limpeza é bastante simples
e deve seguir a lógica e objetivo da macro. Portanto, qualquer tentativa feita aqui apenas se
referiria ao exemplo em questão.
Através da gravação de uma macro, já deve ser óbvio para o leitor como criar uma tabela
dinâmica via VBA.
Neste exemplo simples utilizaremos um nome dinâmico para determinar a área de dados que
utilizaremos em nossa TD. Se o leitor pulou esta parte do curso, ela deve ser lida antes de
continuar.
Primeiramente, nós desejamos que a TD seja criada na própria pasta de trabalho. Por padrão,
utilizaremos uma nova planilha:
Sub adicionarTD()
Dim wb As Workbook
Set wb = ThisWorkbook
With wb
.PivotCaches.Add(xlDatabase, wb.Sheets("Dados").Range("Dados")). _
CreatePivotTable TableDestination:="", _
TableName:="Minha TD via VBA", _
Defaultversion:=xlPivotTableVersion10
End With
Set wb = Nothing
End Sub
Desenvolvimento inteligente
Neste exemplo, tudo que fazemos é adicionar uma nova TD à pasta de trabalho atual. Porém,
pode haver cenários onde desejamos criar a TD em uma nova pasta de trabalho.
Figura 10-3 Erro em tempo de execução para criação de TD em uma pasta nova
10.2.1. Adicionando uma nova tabela dinâmica em uma nova pasta de trabalho
Caso quiséssemos criar uma TD utilizando VBA, o código mais óbvio que utilizaríamos é mostrado
abaixo:
Sub adicionarTD_em_outra_pasta()
Dim wb As Workbook
Dim wbInput As Workbook
Set wb = Application.Workbooks.Add
Set wbInput = ThisWorkbook
With wb
.PivotCaches.Add(xlDatabase, wbInput.Sheets("Dados").Range("Dados")).
_
CreatePivotTable TableDestination:="", _
TableName:="Minha TD via VBA", _
Defaultversion:=xlPivotTableVersion10
End With
Set wb = Nothing
Set wbInput = Nothing
End Sub
Estruturalmente, não há nada de errado com o código, porém ao atingir o bloco With ocorre o erro
mostrado anteriormente.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
102 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
Mas antes de entrar no motivo e na solução vejamos o que o código acima faz:
Possuímos dois objetos Workbook. Um objeto é utilizado como a nova pasta que receberá
a TD e o outro é utilizado como a pasta que contém os dados;
Mas o que está ocorrendo no código que gera tal erro? O problema que temos em mão é que há
uma leve demora entre a adição da nova pasta e o tempo de execução do PivotCache. Neste
pequeno intervalo a pasta não está pronta, mas o PivotCache entra na execução gerando o
erro13.
Uma forma de resolver tal questão é simplesmente adicionar uma pequena pausa na execução do
código para termos certeza que o objeto já se encontra na memória e pronto para receber o
PivotCache.
Sub adicionarTD_em_outra_pasta()
Dim wb As Workbook
Dim wbInput As Workbook
Set wb = Application.Workbooks.Add
Set wbInput = ThisWorkbook
With wb
.PivotCaches.Add(xlDatabase, wbInput.Sheets("Dados").Range("Dados")).
_
CreatePivotTable TableDestination:="", _
TableName:="Minha TD via VBA", _
Defaultversion:=xlPivotTableVersion10
End With
Set wb = Nothing
Set wbInput = Nothing
End Sub
13
Podemos considerer um bug tendo em vista que tal efeito não deveria efetivamente ocorrer.
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 103
Desenvolvimento inteligente
Além deste detalhe, este erro também pode ocorrer caso já exista um TD com o mesmo nome
ativa ou haja um PivotCache na memória.
10.3. Adicionando uma nova tabela dinâmica utilizando os objetos PivotTable e PivotCache
Nos exemplos anteriores nós adicionamos uma tabela dinâmica diretamente a uma planilha ou
pasta nova. Enquanto que não há nada de errado com este método, ele nos deixa com um
pequeno problema em mãos: ele não nos fornece os objetos PivotTable (Tabela Dinâmica) e
PivotCache para manipulação.
Este “pequeno detalhe” pode nos custar caro, principalmente se tudo que desejamos é retornar
informações contidas nos objetos ao invés dos objetos em si.
Sub adicionarTD_com_PivotTable_e_PivotCache()
Desenvolvimento inteligente
Caso o leitor decida pelo segundo método de instanciamento mostrado no código o resultado da
TD será como segue:
Embora o espaço visual seja diferente a funcionalidade é a mesma que a do anterior. Agora que já
temos a TD definida, vejamos como adicionar campos às diferentes áreas de nossa TD.
Este tópico assume que já possuímos um TD em uma determinada planilha e tudo que desejamos
fazer é adicionar os campos em suas determinadas áreas. Este código pode ser juntado ao
anterior para criar todo o processo em um único.
Quando adicionamos os campos, utilizaremos uma das seguintes orientações para os campos:
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas 105
Desenvolvimento inteligente
Na figura acima possuímos dois campos na área de linha (Cidade e Categoria). O campo Cidade
encontra-se na primeira posição ao passo que o campo Categoria encontra-se na segunda
posição.
Além do posicionamento na área de filtro, linha e coluna, nós precisamos nos atentar a área de
dados. Assim como nas outras áreas onde podemos adicionar mais de um campo, nós podemos
adicionar um mesmo campo várias vezes na área de dados.
A diferença é que utilizamos o objeto relativo ao campo (PivotField). O campo pode ser o mesmo,
porém o rótulo do campo deve ser diferente. Na figura anterior, o rótulo é Soma de Total.
O código abaixo mostra como executar tal procedimento. Explicações acompanham o código:
Sub adicionarCampo()
Desenvolvimento inteligente
Desenvolvimento inteligente
Para remover um campo é bastante simples. Na verdade, é tão simples que o leitor poderia gravar
uma macro removendo um campo para descobrir como isso é feito.
Já foram apresentadas as diversas orientações de campos dentro de uma TD. Uma das
orientações é xlHidden.
Seguindo a linha de raciocínio do exemplo anterior, nós podemos resumir a exclusão como segue:
Sub excluirCampo()
Dim ptTbl As PivotTable
Dim ptFld As PivotField
ptFld.Orientation = xlHidden
End Sub
Como podemos ver, remover um campo é bastante simples. Vejamos agora como adicionar
campos utilizando uma matriz.
Um método melhor é utilizar uma matriz juntamente com o método AddFields do objeto
PivotTable.
Sub campoPorMatriz()
Dim ptTbl As PivotTable
Dim ptCache As PivotCache
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
108 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
With ptTbl
.AddFields RowFields:=Array("Cidade", "Categoria")
' .AddFields RowFields:=Array("Cidade", "Categoria"),
ColumnFields:="Região"
.PivotFields("Total").Orientation = xlDataField
End With
End Sub
No exemplo acima, temos a matriz para inserção dos campos na área de linha (Array("Cidade",
"Categoria")) além da inserção do campo Total na área de dados sem a necessidade de
utilizarmos o método AddDataField e o objeto relativo ao campo. No mesmo método, podemos
adicionar campos de categoria no mesmo esquema que os campos de linha.
Pode ocorrer cenários onde o leitor deseja apenas os dados de uma TD e não a TD em si. Em
cenários como estes, nós estamos interessados na utilização do sumário retornado pela TD em
um relatório no Word, apresentação do PowerPoint ou até mesmo para utilização em cálculos no
Excel, para evitar problemas com referências absolutas (ou não, dependendo do cenário) no
calculo direto na TD, além de nos livrarmos do PivotCache o qual certamente consumirá tamanho
do arquivo.
Sub calculoManualAutomatico()
Desenvolvimento inteligente
' Copiar a TD
.TableRange2.Copy
End With
End Sub
Desenvolvimento inteligente
Uma questão importante em relação ao uso de VBA na criação de tabelas dinâmicas diz respeito
ao cálculo automático.
Quando adicionamos itens em um local qualquer de nossa planilha via VBA o item aparece
instantaneamente no local determinado. Infelizmente, isso reduz a velocidade de processando do
que estamos fazendo. A solução utilizada é determinar a propriedade ScreenUpdating do
aplicativo para False (Falso) enquanto executamos o código e no final da execução retornamos
para True (Verdadeiro).
Em uma tabela dinâmica o mesmo ocorre, porém nós utilizamos a propriedade ManualUpdate
para determinar a atualização da TD e melhorar o desempenho do código.
Sub calculoManualAutomatico()
With ptTbl
End Sub
Efetuando a criação da TD nestes moldes, o resultado final será bem mais rápido.
Desenvolvimento inteligente
Muitos usuários não conseguem criar uma tabela dinâmica de impacto por não conhecerem os
dados com os quais trabalha e/ou por não compreender como uma TD analisa e agrupa as
informações. Ao chegar neste tópico acredito que o leitor terá uma visão completa destes pontos
que eu considero básicos, não obstante ainda poderão ocorrer cenários onde o leitor precisará
usar de bom-senso, conhecimento dos dados (e caso não conheça precisará estudá-los) e do
conhecimento adquirido neste curso para rearranjar as informações de modo que consiga o
resultado desejado.
Neste tópico discutirei tais problemas e darei sugestões de como proceder. Lembre-se apenas
que cada caso é um caso. Portanto, use as dicas como guias para solucionar os seus problemas
e não como soluções propriamente ditas.
Um problema comum em tabelas dinâmicas diz respeito a campos nulos. Primeiramente, nós
precisamos distinguir um campo nulo de um campo em branco. A figura abaixo mostra um cenário
simples:
O campo acima é nulo ou está em branco? Apenas olhando a figura não é possível determinar se
o campo é nulo ou se está vazio, porém, ao criamos a nossa tabela dinâmica a diferença
aparecerá:
Desenvolvimento inteligente
Note que quando o campo aparece com a palavra “vazio” ele é, na verdade, nulo. Por outro lado,
quando ele aparece em branco, ele é realmente em branco e não nulo.
Mas como distinguir “em branco” e “nulo” (vazio)? Via de regra, se nada foi feito no campo, ele é
por padrão “nulo”. Por outro lado, se algo foi digitado nele (mesmo que seja uma string em branco)
ele não é nulo – ele é “em branco”.
O leitor poderia criar a seguinte função em VBA para avaliar se o campo é nulo ao não:
Infelizmente, este não é o melhor método para testar se um campo é ou não nulo. No estrito
senso de um banco de dados o campo é nulo e, portanto, precisamos utilizar objetos de um banco
de dados para determinar se um campo é ou não “nulo”.
A figura abaixo mostra o resultado de um loop pelo campo “Letra” para determinar se o valor de
um registro deste campo é ou não nulo:
Desenvolvimento inteligente
Como podemos ver, aqui é registrado corretamente o “status” do campo. O valor “em branco” é,
na verdade, nulo. Por outro lado, ao adicionar um espaço (o qual é “invisível”) e rodarmos
novamente o código o resultado agora já não é mais nulo:
O ponto que desejo enfatizar é que o leitor precisa estar ciente de tal sutileza para determinar se o
valor é “nulo” (mostrado como “vazio” na TD) porque não há tal informação ou se ele é “em
branco” (mostrado sem texto algum) porque há um “espaço” no registro quando deveria ter, na
verdade, um outro valor.
Isso é crucial! Apenas lembre-se do cenário de eleições: - você é capaz de dizer a diferença entre
“voto em branco” e “voto nulo”? Agora, coloque no contexto de uma TD. Imagine você tabulando
“votações em branco” como se fossem “votações nulas”? Acredito que seja desnecessário dizer
que seria um desastre, pois embora pareçam a mesma coisa, ambos são entidades
completamente distintas!
Desenvolvimento inteligente
Portanto, mais uma vez, vale a pena lembrar a importância de conhecer os dados. Se existe um
campo com algum registro nulo quando você esperava algo diferente, verifique imediatamente a
integridade dos dados para evitar problemas na tabulação.
Finalmente, abaixo se encontra o código que utilizei para determinar se o valor é ou não nulo:
Sub checarNulos()
Dim db As DAO.Database
Dim rs As DAO.Recordset
rs.MoveFirst
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Sub
O leitor pode agora tomar uma decisão mais acertada em relação ao cenário aqui apresentado.
Desenvolvimento inteligente
A planilha acima não tem nada de errado, desde que o desejo seja subtotalizar por cômodo.
Porém, note que a informação acima veio de um banco de dados para o Excel o mais provável é
que ela seja de um relatório. Deste modo, o cômodo nada mais é do que um campo em uma outra
tabela (ou na mesma tabela). Na verdade, na própria planilha podemos ver na coluna A o nome
do campo.
Ao chegar neste ponto, o leitor já teve a resposta óbvia: limpar os dados. A primeira coisa que
precisamos fazer é remover as linhas vazias para dar continuidade à lista.
Figura 11-7 Dados limpos e prontos para inserção em uma tabela dinâmica
Autor: Robert F. Martim Criado em: 09/04/2009
Publicado: www.juliobattisti.com.br Última edição: 2/7/2009
Contato: rm@msofficegurus.com
116 Série “Como Fazer” – Excel 2007: Tabelas Dinâmicas
Desenvolvimento inteligente
Com os dados no formato acima, nós estamos prontos para criar a nossa TD, pois eles estão no
formato apropriado. No exemplo abaixo, faço uma simples contagem de quantos produtos estão
destinados a cada cômodo:
A função INFODADOSTABELADINÂMICA tem sua utilidade, porém, pode haver situações onde ela
atrapalha mais do que ajuda. Observe a figura abaixo:
Note que a referência à célula é absoluta ($A$3) para o campo que desejamos extrair o valor.
Embora tal referência nos ajude a manter certa integridade dos dados, muitas vezes ela atrapalha.
Caso o leitor queira arrastar a fórmula ou ocorra alguma mudança estrutural na tabela dinâmica, o
resultado final do cálculo manual pode soletrar “d-e-s-a-s-t-r-e”.
Desenvolvimento inteligente
A solução do “problema” é desativar a inserção automática de tal função. A forma mais fácil é
simplesmente:
Desenvolvimento inteligente
EXPERIÊNCIA PROFISSIONAL
OUTRAS ESPECIALIZAÇÕES
OUTRAS ATIVIDADES
Fornece suporte pro bono em TI à entidade de caridade Nigeriana NIDOE (Nigerians in Diaspora
Organisation Europe) desde 2001. Participou ativamente na organização da conferência sobre
Boa Governança e Responsabilidade Fiscal promovida pelo ONG em Abuja, Nigéria, em
novembro de 2003. Foi um dos principais colaboradores na elaboração do relatório final sobre a
conferência entregue a presidência da República Nigeriana em maio de 2004.
Autor do livro Excel e VBA na Modelagem Financeira: Uma abordagem prática. Editora
Axcel Books, 2005. www.axcel.com.br
Autor principal do livro RibbonX: Customizing the Office 2007 Ribbon, John Wiley &
Sons Publishing, 2008.
Desenvolvimento inteligente
Autor do livro: Excel 2007 Avançado, Editora Universo dos Livros, 2008.
Colaborador ativo do fórum Excel Avançado do site www.juliobattisti.com.br, onde divide seu
conhecimento e experiência com outros membros do espaço. Webmaster do site
www.msofficegurus.com