Caso seja um utilizador assíduo do Microsoft Excel, saberá que a função PROCV lhe traz inúmeras possibilidades na busca de dados de uma lista. Saberá, no entanto, que o PROCV tem algumas limitações, como apenas procurar valores à direita de uma referência, ou devolver o primeiro número encontrado numa lista, ignorando os demais.
O que fazer para devolver todos os valores de uma lista?
De facto, é possível devolver todos os valores de uma lista. Embora o título deste artigo se chame "PROCV com valores repetidos", na realidade não iremos usar esta função. No entanto, é uma ajuda para perceber a lógica do que vai ver já de seguida.
Aplicação prática
Considere os seguintes dados:
Nesta lista de dados encontramos várias cidades portuguesas, acompanhadas de vários vendedores. Facilmente se percebe que cada cidade tem mais de um vendedor. Na coluna "E", elegendo a cidade "Porto" na célula "E4", são retornados os vendedores a partir da célula "E6". A função PROCV apenas devolveria o primeiro da lista, neste caso, o "Vendedor 1"
Então como resolver?
Vamos por partes. Para obter os dados que necessitamos, vamos usar "SE.ERRO", ÍNDICE", "MENOR", "SE" e "LIN". Mas não se assuste. No final, verá que se torna bastante simples.
Função ÍNDICE
Na célula onde queremos inserir os dados, começamos pela função "ÍNDICE".
Ao arrastar até baixo verificará que o mesmo resultado se repete, uma vez que pedimos ao Excel que nos devolva os dados da "Linha 1". Ora, como mudar os dados manualmente não é solução, passamos à segunda etapa.
Função SE
Tenha em consideração a seguinte fórmula:
O que estamos a pedir é que seja retornado o número da linha, sempre que os dados da "Coluna B" sejam iguais à célula "E4". Porque temos no final uma subtracção? A função "LIN" devolve o número da linha da folha Excel, e não o número da linha de uma determinada lista. Isto significa que ao colocar "LIN(B4)", o resultado será "4". Ora, como queremos considerar essa linha como "Linha 1", subtrairemos o número da linha da célula "B3", usando a função "LIN(B3)", e o resultado retornado será "1".
A função "SE" retornará o resultado, caso a condição se verifique. Caso contrário, retornará "FALSO".
** No entanto, precisamos destes dados numa só célula, numa só função. Para isso, vamos digitar a seguinte fórmula:
Seleccione toda a fórmula na barra de fórmulas (sem o sinal de igual) e pressione a tecla "F9". Obtém exactamente o mesmo tipo de dados da "Coluna G", desta vez numa só célula.
A função "SE" está pronta.
Função MENOR
Com a lista de dados da "Coluna G" pronta, há que estabelecer a ligação entre estes dados e os dados a colocar na lista da coluna "E". Desta forma, em "E6" queremos que seja retornado o valor 1, em "E7" o valor 4, em "E8" o valor 7 e "E9" o valor 8. Para isso, usaremos a função "MENOR".
A função "LIN (1:1)" irá retornar o valor 1, ou seja, o maior valor, a função "LIN (2:2)", o segundo maior valor, e assim sucessivamente.
De seguida, incorporamos a função "MENOR" na função "SE", da célula "K4".
Finalização
Para finalizar, vamos inserir a fórmula em "K4" dentro da função "ÍNDICE", actualmente na nossa tabela. Na célula "E6", trocamos o valor "1" da fórmula actual pela fórmula da célula "K4".
No entanto, ao arrastar esta fórmula, ela será retornada com um erro.
Voltamos à barra de fórmulas, e em vez de finalizar a função com "ENTER", finalizamos com "CTRL"+"SHIFT"+"ENTER", criando uma função matricial.
Função "SE.ERRO"
Ao arrastar até ao fim da lista, será retornado um novo erro, caso as referências da lista tenham terminado (exemplo: foram criados dados na lista para retornar 4 valores, mas a lista só contém 3 valores passíveis de serem retornados. Ora, resolvemos isto com a função "SE.ERRO".
Arraste até baixo e a tabela está pronta. Pode apagar todos os dados de apoio, uma vez que foram todos incluídos na nossa fórmula, e serviram para entendermos passo-a-passo a construção desta solução.