Notifications
Clear all

Qual é melhor? PROC(), PROCH(), PROCV() ou ÍNDICE/CORRESP()?

8 Posts
2 Usuários
0 Reactions
1,843 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Dentre as funções supra citadas, qual é a melhor?

PROC()
Vantagens:
- Estupidamente mais rápido que todas as alternativas
- Permite buscar tanto na horizontal qto na vertical
- Permite buscar da esquerda pra direita ou da direita pra esquerda, de baixo pra cima e de cima pra baixo
- Basta apontar duas matrizes com mesmo número de elementos, não importando sua orientação
Desvantagem:
- Quando não encontra algo, pode retornar #N/D ou um valor errado
- Precisa necessariamente que os dados debusca estejam classificados em ordem crescente

PROCV()
Vantagens:
- Permite escolher entre fazer busca exata ou por aproximação
- É de fácil leitura
Desvantagens:
- É 1000 vezes mais lenta que o PROC()
- Permite somente buscas na primeira coluna à esquerda retornando qualquer coluna à direita
- Só funciona na vertical

PROCH()
Vantagens:
- Permite escolher entre fazer busca exata ou por aproximação
- É de fácil leitura
Desvantagens:
- É 1000 vezes mais lenta que o PROC()
- Permite somente buscas na primeira linha retornando qualquer linha abaixo
- Só funciona na horizontal

ÍNDICE/CORRESP
Vantagens:
- Permite buscas horizontais e verticais, em todos os sentidos
- Permite escolher entre fazer busca exata ou por aproximação
Desvantagens:
- É 1000 mais lenta que o PROC()
- É mais difícil leitura e entendimento
- Usa duas funções ao invés de uma *(portanto não sei o que é lento, o índice(), ou o corresp(), acho que o CORRESP(), mas é chute)

Cada pessoa pode considerar uma função melhor ou pior, baseado na sua necessidade. Se eu estiver procurando desempenho, e tenho a certeza que meus dados sempre são classificados, oras, o PROC() é a melhor opção.
Se eu quero de fato uma garantia que encontro o valor e não me preocupar com desempenho, as outras são melhores opções.
Se eu tenho certeza que a coluna da esquerda é sempre a coluna da busca, o PROCV() pode ser a melhor opção pq é mais fácil de ler e escrever e mais pessoas conhecem e podem dar manutenção.
Se eu preciso necessariamente buscar da direita pra esquerda, daí o PROCV() não atende, podemos usar o PROC() ou o ÍNDICE/CORRESP...

Enfim, o que é melhor pra você, pode não ser o melhor pro outro. É tudo muito relativo.

FF

Novidade! Evidência em vídeo:
https://www.youtube.com/watch?v=LA_WLEPjwWM

 
Postado : 31/01/2017 8:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fernando e sua didática... Muito bom como sempre...

Mas dentre essas alternativas, indiferente de qualquer coisa.... Só uso índice(corresp()).
:lol: :lol: :lol: :lol: :lol:

Qualquer coisa da o grito.
Abraço

 
Postado : 31/01/2017 8:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fernando, eu vi um meme no facebook uma vez, e acredito que você já deve ter visto também...

Em uma entrevista de emprego:
Entrevistador: Aqui no seu currículo você disse que faz conta rápido.
Candidato: Sim. Isso mesmo.
Entrevistador: Quanto é 627 + 515
Mais que depressa o Candidato responde:
Candidato: 2.500
Entrevistador: Mas está absurdamente errado.
Candidato: Mas foi rápido.

Me lembrei na hora do proc()
Não adianta ser rápido...
Apesar de eu já ter visto o proc() ser usado em algumas soluções geniais... há outros meios...
:lol: :lol: :lol: :lol: :lol:

 
Postado : 31/01/2017 9:01 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

.
Muito esclarecedor o tópico!! ... No entanto, PROC nunca usei, PROCH umas 2x, PROCV até descobrir Índice/Corresp!! kk
.

 
Postado : 31/01/2017 6:37 pm
(@bagual)
Posts: 0
New Member
 

Eu uso o PROCV, satisfaz 90% das minhas necessidades de busca.

Nos outros 10% eu uso Indice/corresp.

Não saquei muito bem o lance da velocidade, porque tanto para digitar as fórmulas quanto para rodar nunca notei diferença de tempo, isso que minhas bases tem em média 10 a 15mil linhas.

 
Postado : 01/02/2017 7:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu sempre notei a diferença pois o pc que eu aprendi a mexer era muuuito ruim..
kkkkkkkkk

 
Postado : 01/02/2017 7:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não saquei muito bem o lance da velocidade, porque tanto para digitar as fórmulas quanto para rodar nunca notei diferença de tempo, isso que minhas bases tem em média 10 a 15mil linhas.

Bom dia Bagual,

Eu fui mais longe, elas de fato parecem instantâneas, mas será que são? Daí eu criei uma planilha com 60mil linhas e 100 colunas, de dados aleatórios... E outra planilha do lado, com 10mil linhas por sei lá qtas colunas com fórmulas de busca para a origem dos dados. Já faz tempo, posso encontrar o modelo e postar por aqui depois...

Enfim, com o VBA, eu desligo o cálculo, escrevo todas as fórmulas, disparo um timer, religo o cálculo, registro o tempo final. Fiz isso com todas elas... tb fiz teste semelhante para comparar soma matricial com somarproduto e com somases... Resultados interessantes qdo o PROC() ganhou nas buscas, sendo sempre 1000 vezes mais rápido que as alternativas, e o SOMASES ganhou também, só não lembro a índice da vitória do SOMASES()... Se houver interesse, eu coloco a planilha aqui ! *(está em casa, só poderei a noite)

então, explicando... eusó consegui identificar a diferença, em ambiente controlado e realizando dezenas de milhares de vezes a mesma fórmula...

 
Postado : 01/02/2017 7:32 am
(@bagual)
Posts: 0
New Member
 

Não saquei muito bem o lance da velocidade, porque tanto para digitar as fórmulas quanto para rodar nunca notei diferença de tempo, isso que minhas bases tem em média 10 a 15mil linhas.

Bom dia Bagual,

Eu fui mais longe, elas de fato parecem instantâneas, mas será que são? Daí eu criei uma planilha com 60mil linhas e 100 colunas, de dados aleatórios... E outra planilha do lado, com 10mil linhas por sei lá qtas colunas com fórmulas de busca para a origem dos dados. Já faz tempo, posso encontrar o modelo e postar por aqui depois...

Enfim, com o VBA, eu desligo o cálculo, escrevo todas as fórmulas, disparo um timer, religo o cálculo, registro o tempo final. Fiz isso com todas elas... tb fiz teste semelhante para comparar soma matricial com somarproduto e com somases... Resultados interessantes qdo o PROC() ganhou nas buscas, sendo sempre 250 vezes mais rápido que as alternativas, e o SOMASES ganhou também, só não lembro a índice da vitória do SOMASES()... Se houver interesse, eu coloco a planilha aqui ! *(está em casa, só poderei a noite)

então, explicando... eusó consegui identificar a diferença, em ambiente controlado e realizando dezenas de milhares de vezes a mesma fórmula...

Eita nóis

 
Postado : 01/02/2017 8:51 am