Ir ao conteúdo
  • Cadastre-se

Ajuda com funÇÃo procv


Kadu Du

Posts recomendados

Boa noite galera!

Minha dúvida acho que é simples. Tenho dados em uma planilha e utilizo a função PROCV para pesquisa. Só que ela retorna apenas o último valor cadastrado. Quero que ela retorne o último valor de acordo com o tipo do registro que quero buscar.

Segue o link da mesma:

http://www.sendspace.com/file/jow5ff

Agradeço desde já!

Link para o comentário
Compartilhar em outros sites

Zinho boa noite!

Observe que na planilha tem o campo tipo de registro. A tabela do lado tem como objetivo procurar arquivos reincidentes, ou seja, vou cadastrar cada novo registro e quero procurar se quando abrir um novo, ele busque se já existe algum cadastrado pelo tipo da empresa e registro.

Link para o comentário
Compartilhar em outros sites

Olá, kyok,

De acordo com o seu exemplo, acredito que você gostaria de adicionar a fórmula a partir da célula F14, certo?

Você pode utilizar a seguinte fórmula matricial, a partir da célula F14:

{=ÍNDICE(B:B;CORRESP(1;(A:A=F12)*(B:B=E14);0))}

Lembre-se que, para inserir uma fórmula matricial numa célula, é necessário pressionar CTRL + SHIFT + ENTER após a sua edição.

O primeiro intervalo que aparece, B:B, refere-se à coluna em que o valor retornado será pesquisado (de acordo com a sua planilha, caso você queira que a fórmula retorne o tipo do produto, dado dois critérios, o intervalo deve ser alterado para C:C).

Os outros dois intervalos que aparecem, A:A e B:B, referem-se às colunas ondem os critérios serão pesquisados.

O primeiro critério adicionado à fórmula, (A:A=F12), cria um vetor com os seguintes valores:

- FALSO (o nome da empresa não foi encontrado em A1);

- FALSO;

- VERDADEIRO (o nome da empresa foi encontrado em A3);

- VERDADEIRO;

- FALSO;

- FALSO;

[...]

O segundo critério, (B:B=E14), retorna o seguinte vetor:

- FALSO (o tipo do registro não foi encontrado em B1);

- FALSO;

- FALSO;

- VERDADEIRO (o tipo do registro foi encontrado em B4);

- FALSO;

- FALSO;

[...]

Ao multiplicar os dois vetores criados, os valores booleanos (VERDADEIRO e FALSO) são transformados em zeros e uns:

- 0 * 0 = 0;

- 0 * 0 = 0;

- 1 * 0 = 0;

- 1 * 1 = 1 (os dois critérios, nome da empresa e tipo do registro, foram atendidos);

- 0 * 0 = 0;

- 0 * 0 = 0;

[...]

O resultado da multiplicação cria um terceiro vetor, no qual os seus resultados serão 1 apenas se os dois critérios forem VERDADEIROS, conforme acima.

Criado o terceiro vetor, basta utilizar a fórmula CORRESP para descobrir em qual linha ambos os critérios são atendidos - o número da linha que apresenta o seu valor igual a 1.

- CORRESP(1, VETOR COM ZEROS E UNS, 0) = 4.

Ao obter o número da linha em que ambos os critérios são atendidos, basta utilizá-la na fórmula ÍNDICE, para obter o resultado esperado.

- ÍNDICE(COLUNA QUE CONTÉM O DADO ESPERADO, NÚMERO DA LINHA ENCONTRADO ANTERIORMENTE).

Fiz o upload da planilha, contendo a fórmula citada, em http://www.sendspace.com/file/tec3oe.

Link para o comentário
Compartilhar em outros sites

Vini boa tarde

Acrescentei a função SEERRO. Gostaria de saber se é possível pesquisar todos os itens do cadastro e que a fórmula me retornasse um valor como " PROBLEMA REINCIDENTE" ou " REINCIDÊNCIA PARCIAL". Como se a fórmula tivesse todos os critérios para aprovar ou reprovar o cadastro.

Grato

Link para o comentário
Compartilhar em outros sites

kyok,

Não entendi completamente o que você quis dizer.

Caso queira utilizar todas as colunas como critérios, bastaria utilizar uma fórmula similar à apresentada abaixo.

=ÍNDICE($B$1:$B$8;CORRESP(1;($A$1:$A$8=F12)*($B$1:$B$8=E14)*($C$1:$C$8=E15)*($D$1:$D$8=E16)*($E$1:$E$8=E17)*($F$1:$F$8=E18);0))

Observação: neste caso, como a procura será feita em diversas colunas, recomenda-se a definição de um intervalo específico, ao invés de toda a coluna - $A$1:$A$8, ao invés de $A:$A, por exemplo.

Link para o comentário
Compartilhar em outros sites

Olá, kyok,

É, sim, possível. Neste caso, você não precisaria da função ÍNDICE. Bastaria adicionar uma fórmula similar à abaixo:

=SEERRO(SE(CORRESP(1;($A$1:$A$8=F12)*($B$1:$B$8=E14)*($C$1:$C$8=E15)*($D$1:$D$8=E16)*($E$1:$E$8=E17)*($F$1:$F$8=E18);0)>0;"Já existe");"Não existe")

Lembre-se que, devido à formula ser matricial, você deve concluir a sua edição pressionando CTRL + SHIFT + ENTER. Ao concluí-la corretamente, o Excel adicionará automaticamente as chaves - { }.

Link para o comentário
Compartilhar em outros sites

Vini valeu pela dica. Ontem depois que postei lembrei da ajuda do Patropi com a fórmula somar produto. Fiz o seguinte: Coloquei o Seerro,Se e ao invés de colocar >0, repeti a fórmula como igual. Ficou um pouco maior. EHEHEH. Os dados são de outras planilhas que estou buscando e ae você já viu, ficou grande mesmo.

So seu jeito ficou menor. Lembrei que poderia fazer um teste lógico com a própria fórmula.

Apenas quero tirar só uma dúvida: porque para fazer a pesquisa com menos critérios tenho que usar a fórmula índice e corresp e com todos os critérios não é preciso?

Grato

Eduardo

Link para o comentário
Compartilhar em outros sites

kyok,

Na verdade, a função ÍNDICE não foi removida devido à utilização de um maior número de critérios, mas, sim, devido à sua necessidade.

A primeira questão que você fez foi algo como: Como realizar um PROCV com mais de um critério? Devido ao PROCV retornar o valor de uma determinada coluna, a função ÍNDICE foi utilizada (na primeira fórmula citada) para que, após a verificação de todos os critérios definidos, o valor que seria retornado pelo PROCV fosse também retornado.

Posteriormente, você disse que gostaria de saber apenas se todos os dados cadastrados já existiam, de acordo com os critérios definidos. Neste caso, ficou claro que você não queria que a fórmula retornasse o valor de uma das colunas, mas, sim, que informasse a existência de uma linha que atendesse todos os critérios definidos. Portanto, a função ÍNDICE foi removida, e a função SE, adicionada, retornando as mensagens "JÁ EXISTE" ou "NÃO EXISTE".

Link para o comentário
Compartilhar em outros sites

Vini.

Agradeço por todas explicações e fórmulas. Vou utilizar todas as fórmulas. Na minha planilha todas irão se encaixar. Agora preciso de mais uma ajuda:

Tenho essa planilha http://www.sendspace.com/file/arfenz

Quero buscar na aba DADOS determinado produto pelo código e quero que ele retorne todas as datas de entrada na aba TESTE. Observe que na aba DADOS tenho uma coluna com data de recebimento e gostaria de ter o histórico por datas para a montagem dos gráficos.

Grato

Link para o comentário
Compartilhar em outros sites

Olá, kyok,

Acredito que a sua dúvida inicial, a qual originou a abertura do tópico, já foi esclarecida, certo?

De qualquer forma, utilizando fórmulas similares às citadas neste tópico, fórmulas citadas pelo Patropi em outros tópicos - conforme você mesmo disse -, além de um pouco de pesquisa e criatividade, você consegue resolver este outro problema.

Verifique, também, o artigo http://usuariosdoexcel.wordpress.com/2011/06/18/simulando-procv-com-multiplos-retornos/ - encontrado após simples pesquisas no Google.

Com todas as informações, basta adaptar as fórmulas à sua necessidade. Caso você tenha dificuldade na resolução do seu problema, crie um novo tópico no fórum, relatando o esforço empenhado, o motivo do resultado já obtido não atender a sua necessidade e, por fim, a sua dúvida. Certamente, muitos estarão prontos a ajudá-lo na conclusão do que você já iniciou.

Link para o comentário
Compartilhar em outros sites

Olá, kyok,

Relendo a última resposta ao tópico, acredito que a mensagem que deixei pode ser interpretada de uma forma em que eu não gostaria.

Me desculpe se a mensagem soou um pouco áspera. Esta não era a minha intenção.

O que eu realmente queria dizer é que este segundo problema, relatado por você neste tópico, pode ser resolvido com uma adaptação das fórmulas que você encontrou por aqui, além de algumas simples pesquisas.

Para podermos ajudá-lo mais eficientemente, o ideal seria que você tentasse realizar o que gostaria, e, em casos de dificuldades, iniciasse um novo tópico, apresentando o que você já supostamente terá alcançado e o problema do resultado não atender a sua necessidade. Desta forma, sua dúvida se torna mais clara para todos os que lerem o tópico e você tem uma solução mais satisfatória.

Uma possível solução para o segundo problema citado seria a adição de uma fórmula similar à apresentada abaixo, a partir da célula O2 da planilha DADOS.

Exceto pela referência à célula de comparação ($A2, por exemplo), as fórmulas abaixo apresentadas são idênticas; repeti a fórmula várias vezes para exemplificar a relação entre número da data vs código do fornecedor.

O2 (primeira data do primeiro código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

P2 (segunda data do primeiro código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

[...]

O3 (primeira data do segundo código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

P3 (segunda data do segundo código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

[...]

Observação: todas as colunas que conterão as datas deverão ser, obviamente, formatadas como data.

No entanto, você pode ter uma solução mais satisfatória realizando o que mencionei anteriormente :)

Novamente, desculpe-me.

Não hesite em tirar quaisquer dúvidas ou dificuldades que você apresentar, seja com o problema já citado ou algum outro que possa surgir, aqui no fórum.

---

À moderação,

Desculpe-me se agi de forma desrespeitosa. Agir desta maneira nunca foi a minha intenção.

Link para o comentário
Compartilhar em outros sites

Vini boa noite!

Fique tranquilo quanto a essa questão. Gela a cabeça. Eu como usuário inexperiente no excel só tenho que agradecer pela sua gentileza em tentar solucionar as minhas dúvidas. Entendo algumas das centenas de fórmulas que o Excel têm, mas não sei como juntá-las numa mesma fórmula e fico batendo cabeça. Do mesmo modo que vocês me ajudam eu procuro ajudar as pessoas que não sabem com o desenvolvimento de planilhas para a minha área e o dia-a-dia da empresa. Um dia vi uma frase e me chamou a atenção " O conhecimento nada vale se não é aplicado". Depois disso procuro tentar ajudar em tudo o que posso e quando não sei vou atrás para ajudar. Tudo que faço de documento novo para a minha área, disponibilizo no Linkedin como forma de agradecer a todos que me ajudam. A todos aqui meu eterno agradecimento.

Favor fechar o tópico pois a DÚVIDA inicial foi sanada de forma eficiente. A outra dúvida estou verificando ainda, e qualquer coisa retorno para lhe informar.

Um grande abraço!

Eduardo

Olá, kyok,

Relendo a última resposta ao tópico, acredito que a mensagem que deixei pode ser interpretada de uma forma em que eu não gostaria.

Me desculpe se a mensagem soou um pouco áspera. Esta não era a minha intenção.

O que eu realmente queria dizer é que este segundo problema, relatado por você neste tópico, pode ser resolvido com uma adaptação das fórmulas que você encontrou por aqui, além de algumas simples pesquisas.

Para podermos ajudá-lo mais eficientemente, o ideal seria que você tentasse realizar o que gostaria, e, em casos de dificuldades, iniciasse um novo tópico, apresentando o que você já supostamente terá alcançado e o problema do resultado não atender a sua necessidade. Desta forma, sua dúvida se torna mais clara para todos os que lerem o tópico e você tem uma solução mais satisfatória.

Uma possível solução para o segundo problema citado seria a adição de uma fórmula similar à apresentada abaixo, a partir da célula O2 da planilha DADOS.

Exceto pela referência à célula de comparação ($A2, por exemplo), as fórmulas abaixo apresentadas são idênticas; repeti a fórmula várias vezes para exemplificar a relação entre número da data vs código do fornecedor.

O2 (primeira data do primeiro código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

P2 (segunda data do primeiro código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A2)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

[...]

O3 (primeira data do segundo código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

P3 (segunda data do segundo código do fornecedor):

{=SEERRO(ÍNDICE(TESTE!$L$1:$L$121;MENOR((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121);SOMARPRODUTO(N((TESTE!$D$1:$D$121=$A3)*LIN(TESTE!$D$1:$D$121)=0))+COL()-14));"")}

[...]

Observação: todas as colunas que conterão as datas deverão ser, obviamente, formatadas como data.

No entanto, você pode ter uma solução mais satisfatória realizando o que mencionei anteriormente :)

Novamente, desculpe-me.

Não hesite em tirar quaisquer dúvidas ou dificuldades que você apresentar, seja com o problema já citado ou algum outro que possa surgir, aqui no fórum.

---

À moderação,

Desculpe-me se agi de forma desrespeitosa. Agir desta maneira nunca foi a minha intenção.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...