Preciso de uma função =Func(A1, "Alex, "Betty", "Charlie")
que retorne o índice da entrada correspondente. Se esta função for colocada em B1:B13, ela mostraria
"Charlie" 3
"Alex" 1
"Alex" 1
"Alex" 1
"Charlie" 3
"Charlie" 3
"Betty" 2
"Charlie" 3
"Charlie" 3
"Betty" 2
"Betty" 2
"Betty" 2
"Alex" 1
Achei que CHOOSE faria isso à primeira vista, mas ele retorna uma referência baseada em um número inteiro, o inverso do que preciso.
Existe uma função existente que faz isso que eu perdi, eu teria que criar uma função mais complicada com algo como ifs ou vlookup aninhados, ou teria que escrever uma função em VBA?
Obrigado pelo seu tempo e ajuda.
Responder1
Se você puder colocar os valores para comparação em um intervalo em outro lugar da planilha, poderá usar a função LOOKUP. LOOKUP procura seu primeiro argumento no intervalo especificado no segundo argumento e retorna o valor correspondente do intervalo no terceiro argumento. Você terá que adicionar um intervalo especificando o valor desejado.
Por exemplo, eu crio a tabela de pesquisa em F1:F3 e G1:G3:
FG 1 Alex 1 2Betty 2 3Charlie 3
Então a função a ser usada é
B 1 =PROC (A1,$F$1:$F$3,$G$1:$G$3) 2 =PROC (A2,$F$1:$F$3,$G$1:$G$3)
Na célula B1, LOOKUP procura A1 ("Charlie"), encontra-o em F3 e retorna o valor de G3, que é 3. Na célula B2, LOOKUP procura A2 ("Alex"), encontra-o em F1 e retorna o valor de G1, que é 1.
Você também pode colocar a tabela de pesquisa em outra planilha da pasta de trabalho, se não quiser na planilha principal.
Responder2
Não tenho 100% de certeza da aparência dos seus dados de origem, mas a função MATCH analisará um único valor e retornará sua posição dentro de uma matriz.
Se A1:A4 for
Alex
Betty
Charlie
Betty
e em B1 você coloca
=MATCH(A1,$A$1:$A$4)
B1 retornará
1
Em seguida, basta preencher B1 até B4 e você terá o resultado.