Dicas do Microsoft Excel é ao Domingo…no Pplware – 46
Fórmulas de Matriz – Array Formulas (Parte II)
Ora vivam caros leitores. Mais um Domingo e mais uma artigo da rubrica “Dicas do Microsoft Excel é ao Domingo….no Pplware”. Lembramos que esta é uma rubrica “aberta” a todos os leitores que pretendam contribuir. Para tal devem enviar-nos um e-mail com a dica que pretendem ver publicada. Caso tenham também alguma dúvida ou problema a resolver no Excel, deixem essa informação nos comentários para que a comunidade Pplware ajude a resolver.
O Excel possui muitos recursos desconhecidos e pouco documentados, como as funções BDContar e a SOMARPRODUTO já apresentada em artigos anteriores. No ultimo tutorial ensinamos demos um exemplo básico de como usar Fórmulas de Matriz. Hoje vamos apresentar um exemplo mais complexo, para isso vamos considerar a seguinte informação:
Suponha que queremos saber o total de vendas do vendedor Barnhill. Para isso basta usarmos a função SE, e a fórmula fica:
=SOMA(SE(B2:B12=“Barnhill”;D2:D12*E2:E12))
Acompanhe o passo-a-passo da execução desta fórmula.
Agora um exemplo mais completo. Vamos fazer um relatório mestre-detalhe, onde possamos listar todas as vendas de um determinado vendedor. Desta vez vamos usar a fórmula abaixo.
=SEERRO(ÍNDICE($A$2:$E$12; MENOR(SE(B2:B12=“Barnhill”;LIN(A2:A12));LIN(1:3))-1; 3);"")
Como o retorno desta fórmula é uma matriz de 3 elementos, você deve:
- Selecionar 3 células no Excel
- Colar a fórmula acima
- Pressionar CTRL + SHIFT + ENTER
Antes de explicar a fórmula é preciso explicar as novas funções que usamos aqui:
- LIN(A2:A12) retorna uma matriz {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}. Usaremos como parâmetro para a função ÍNDICE.
- LIN (1:3) retorna uma matriz {1, 2, 3}, usaremos apenas como parâmetro para a função MENOR.
- MENOR (matriz, k) será usado para selecionar dentre os resultados da função SE até três vendas do vendedor selecionado. O parâmetro matriz é o resultado da função SE (ver passo 4 na tabela acima), e o parâmetro k é a matriz de LIN que nos permitirá selecionar o primeiro, segundo e terceiro valor da matriz resultante da função SE.
- ÍNDICE busca um elemento em uma matriz dado a linha e coluna do elemento. A matriz informada ($A$2:$E$12) é a própria tabela de vendas, a linha será o resultado da função MENOR e a coluna na fórmula acima é 3, que é a coluna “Produto”.
- SEERRO será usada para mostrar um valor vazio (“”) quando o vendedor possui menos que três vendas
O que a fórmula faz:
Juntando todos os exemplos temos o seguinte resultado. Neste exemplo abaixo basta trocar o nome do vendedor na célula A16 e automaticamente serão mostradas as suas vendas abaixo. Os campos Email e Cidade usam a função PROCV (já detalhada em artigos anteriores) para trazer seus dados da folha de cálculo Vendedor.
Como pudemos ver, Fórmulas de Matriz são extremamente poderosas, podem poupar um grande trabalho, evitar fórmulas intermediárias e sub-totais, além de permitir funcionalidades inéditas no Excel como relatórios metre-detalhe. Porém se não usadas com cuidado podem ser muito confusas e gerar resultados indesejados.
Por hoje é tudo! Esperamos que as dicas sejam úteis e que vos ajudem a dominar o Microsoft Excel. Como referi anteriormente, esta dica está aberta a todos os que pretendam contribuir. Enviem-nos as vossas dicas para ppinto @ pplware .com para publicarmos em próximos artigos.
Outros artigos sobre Excel
- Operações básica: SOMA, MÉDIA, MÁXIMO, MINIMO
- Actualização da formula de acordo com a linha e coluna
- Referências fixas
- Utilização de formulas e valores em várias folhas
- Destacar facilmente valores em Excel
- Dividir uma String (frase) em partes
- Função VLOOKUP (PROCV em Português)
- Converter formulas em números
- Criar listas de números aleatórios
- Funções lógicas do Excel: SE(), E(), OU()
- Adicionar totais a um gráfico de colunas empilhadas
- Formatar comentários
- Funções Financeiras (Funções PGTO() e TAXA())
- função DIA.DA.SEMANA e a função TEXTO
- Esconder informação na hora de imprimir
- Listas Personalizadas
- Preencher células em branco
- Mover, copiar ou colar os dados na sua folha de Excel
- Criar modelos de gráficos personalizados
- Adicionar dados a um gráfico
- Funcionalidades “escondidas” do Excel
- Definir Nomes para as células
- Função SOMARPRODUTO()
- Soma Automática
- Como lidar com datas num gráfico
- Função ORDEM
- Fixar os dados de um gráfico
- Proteger uma folha de Excel
- Validação de dados…Combobox com dados
- Concatenação e funcionalidade Localizar e Substituir
- Ordenação de valores
- Como criar uma Macro
- Função Compactar
- Definir a área de impressão dinamicamente
- Percentagem variável
- MAIÚSCULAS, MINÚSCULAS ou INICIAL.MAIÚSCULA e Função Potência
- Tabelas dinâmicas
- Trabalho colaborativo
- Activar e utilizar um suplemento
- Gráficos sparkline
- Personalizar Gráficos sparkline para mostrar tendências de dados
- Definir e utilizar nomes em fórmulas
- Função BDContar
- Função Não
- Fórmulas de Matriz – Array Formulas (Parte I)
Este artigo tem mais de um ano
As fórmulas matriciais sempre foram do meu agrado por condensarem múltiplas operações e originarem soluções bem engenhosas e úteis. No exemplo, o total de vendas do vendedor Barnhill pode ser obtido por várias fórmulas matriciais.
Considerando B15<- “Barnhill” a fórmula proposta
=SOMA(SE(B2:B12=$B$15;D2:D12*E2:E12)) pode ser escrita como:
=SOMA(SE(B2:B12=$B$15;D2:D12;0)*E2:E12)
=SOMARPRODUTO((B2:B12=$B$15)+0;D2:D12;E2:E12)
=SOMA(((B2:B12=$B$15)+0)*D2:D12*E2:E12)
=SOMA(D2:D12*E2:E12*(B2:B12=$B$15))
ola
ao executar a primeira funçao… =SOMA(D2:D12)*(E2:E12)
devolve-me.. #Valor!
acontece o mesmo nas funçoes seguintes, alguma ideia do que possa estar errado…
Olá João
Julgo que se está a esquecer de validar as fórmulas com CTRL+SHIFT+ENTER em vez de usar apenas ENTER.
obrigado
era isso mesmo..
Isso tem de estar como matriz.
Olá, aqui tem o arquivo usando no artigo com as funções de matriz: http://www.promtec.com.br/wp-content/uploads/2012/11/Excel_Matriz_pplware.xlsx
ola Jose
seria possivel disponibilizar aqui o ficheiro?
eu faço sempre os exemplos apresentados mas por vezes nao chego aos mesmos resultados, devo estar a fazer algo errado nas formulas…
agradecido
Com base no ficheiro disponibilizado pelo colaborador Leandro Jekimim Goulart, introduzi as fórmulas referidas no meu primeiro post e tomei a liberdade de alterar outras.
Excel_Matriz
Olá José,
Boa contribuição! Já vi muitos recorrerem ao Access para fazer algo um pouquinho mais avançado (como um relatório mestre-detalhe), recursos que às vezes as funções matriciais resolvem.
Abraço!
como ficaria a fórmula se eu quisesse as 3 vendas do vendedor “sanchez” porém, que aparecessem em ordem de maior venda para a menor??
Olá Elizandro
Use apenas a seguinte fórmula matricial aplicada ao nº de linhas que entender necessárias mas obrigatoriamente a quatro colunas (seleccione por exemplo [K23:N33])
=SE.ERRO(ÍNDICE($A$2:$E$12;CORRESP(MAIOR(–($B$2:$B$12=$A$16)*–($E$2:$E$12);LIN(A1:A11));$E$2:$E$12;0); {1\3\4\5});””)
Não se esqueça de validar com CTRL+SHIFT+ENTER
Cumprimentos
Segue novamente a fórmula pois os dois sinais menos seguidos antes de e depois de ($B$2:$B$12=$A$16)* ficaram reduzidos a apenas um travessão antes e um depois.
=SE.ERRO(ÍNDICE($A$2:$E$12;CORRESP(MAIOR(–($B$2:$B$12=$A$16)*–($E$2:$E$12);LIN(A1:A11));$E$2:$E$12;0); {1\3\4\5});””)
em alternativa utilize a fórmula
=SE.ERRO(ÍNDICE($A$2:$E$12;CORRESP(MAIOR(0+($B$2:$B$12=$A$16)*($E$2:$E$12);LIN(A1:A11));$E$2:$E$12;0); {1\3\4\5});””)
Augusto.. .bom dia!
colei as duas fórmulas.. dei uma conferida… tive o cuidado de transformá-la em matricial.. porém apresentou em todos os campos o erro #NOME?
Qual a versão de Excel que usa?
Seleccione uma folha vazia escreva nas células A1:D1 os valores 1, 3, 4 e 5., e com uma outra célula seleccionada, escreva na barra de fórmulas =A1:D1 e clique na tecla F9. Veja o que ficou escrito na barra {1\3\4\5} ou não. Se não, substitua na minha fórmula o vector linha {1\3\4\5} por aquele que foi encontrado.
Se não resultar tente ver se a formula funciona para obter os valores da coluna preço unitário, substituindo o vector pelo valor 5 (só uma coluna seleccionada)
Veja a correspondência entre Excel PT e Excel BR
SE.ERRO (PT-PT) SEERRO (PT-BR)
É uma das causas do erro que está a encontrar.
Augusto.. melhorou.. está trazendo as datas corretas… e me parece na ordem financeira… porém traz somente datas… veja abaixo.
19/10/2012 19/10/2012 19/10/2012
08/10/2012 08/10/2012 08/10/2012
13/10/2012 13/10/2012 13/10/2012
#NOME? #NOME? #NOME?
verifiquei sua orientação em relação sobre o vector e está aparecendo conforme você mencionou: {1\3\4\5} .
Olá Elizandro
Veja o ficheiro que partilho no Google Drive
Excel_Matriz_pplware.xlsx
AUGUSTO… FICOU MUITO boa… você é muito fera no excel.
Fiz alguns testes e verifiquei que quando há dados financeiros iguais de um mesmo vendedor a fórmula trás sempre o mesmo produto… como solucionar isso?? no caso a fórmula que vem classificada por valores descrescentes… eu preciso que ela seja decrescente, como você fez… porém… que a fórmula busque o produto correto…
Alternativa com uma só fórmula, lista ordenada pelo preço
Data Produto Quantidade Preço Unitário
08/10/2012 Notebook 6 2.250,00 €
08/10/2012 Notebook 6 2.250,00 €
08/10/2012 Notebook 6 2.250,00 €
tem algum email que eu possa encaminhar para você uma planilha que eu preciso desenvolver, com esta fórmula?? falta pouco…rsrs
Use a fórmula que se segue: (ordem de preço e dentro do mesmo preço ordem da posição)
=SE.ERRO(ÍNDICE($A$2:$E$12;CORRESP(MAIOR(0+($B$2:$B$12=$A$16)*($E$2:$E$12-LIN($E$2:$E$12)*0,00001);LIN(A1:A11));($E$2:$E$12-LIN($E$2:$E$12)*0,00001);0); {1\3\4\5});””)
Quanto ao resto, o meu trabalho/tempo não me permite assumir nenhum outro “encargo”. 🙂
VEJA SE VOCE CONSEGUE acessar a planilha no link do google drive
https://drive.google.com/open?id=0B0eAec9XozD3dkhrVlRCT1RkZDQ
é bem simples… tem uma tabela… de vendas…. cidades e região…
preciso dos 10 maiores cidades vendedoras por região… a tua fórmula criada atende quase perfeitamente… porém terei algumas vendas iguais por região e cidade… e a fórmula deve trazer a cidade correta … e não a primeira… como está acontecendo com a tua fórmula atual…
Augusto… entendo perfeitamente…
colei a fórmula que você passou… mas ela retorna apenas as datas…
Data Produto Quantidade Preço Unitário
19/10/2012 19/10/2012 19/10/2012 19/10/2012
08/10/2012 08/10/2012 08/10/2012 08/10/2012
13/10/2012 13/10/2012 13/10/2012 13/10/2012
Veja os ficheiros
Fórmula maior.
Fórmula maior.
Ignore a resposta anterior
Veja os ficheiros 1 e 2
Ficheiro 1
Ficheiro 2
oi augusto.. não veio o link….nos arquivos ficheiro 1 e 2.. refaça por favor
Julgo que agora estão correctos
Ficheiro 1
Ficheiro 2
Augusto.. bom dia!
ainda não… tentei no celular e no micro.. não abriu… página não pode ser exibida.
cole aqui mesmo a fórmula… grato.
abraço.
Bom dia
Seleccione as células B2:C2 do seu ficheiro [fórmula maior.xlsx] e escreva na barra de fórmulas
=SE(CONTAR.SE($G$2:$G$58;$E$2)>=$A2;SE.ERRO(ÍNDICE($H$2:$I$58;CORRESP(MAIOR(0+($G$2:$G$58=$E$2)*($I$2:$I$58-LIN($I$2:$I$58)*0,00001);$A2);($I$2:$I$58-LIN($I$2:$I$58)*0,00001);0); {1\2});””);””)
copie B2:C2 para baixo.
Nota: No meu computador os links abrem sem problema
Não se esqueça de que é uma fórmula matricial.
olá.. como fazer uma fórmula que traga-me, na relação abaixo, SEM CRIAR COLUNAS ACESSÓRIAS, os maiores destinos, tendo como origem Florianópolis?
ex.: o maior destino, tendo como origem florianópolis é: Chapecó – 4 vezes
o segundo maior destino, tendo como origem Florianópolis é: São Francisco do sul – 3 vezes… e assim por diante.
Esta fórmula tem que ter um argumento, no caso “florianópolis” e após contar os destinos e trazer os maiores…nomeando a quantidade e o nome da cidade.
ORIGEM DESTINO
Florianópolis São Francisco do Sul
Urussanga Chapecó
florianópolis Chapecó
São Bento do Sul Chapecó
Florianópolis Chapecó
Florianópolis São Francisco do Sul
Florianópolis São Francisco do Sul
Barra Velha Maceió
Florianópolis Camboriú
Gravatal Barra do Garças
Lages Barra do Garças
Lages Maravilha
Lages Maravilha
Içara Maravilha
Florianópolis Chapecó
Florianópolis Chapecó