Como o Excel não suporta expressões regulares, não acho que exista uma fórmula que não precise de uma coluna auxiliar. No meu exemplo,
- A contém os números com um "-"
- B contém os números que são correspondidos
- C contém os valores de B sem o primeiro dígito
- D é "FALSE" se o valor de A não corresponder a nenhum na coluna B ou "TRUE", + referência à célula correspondente.
A fórmula em C1 é:
=RIGHT(B1,LEN(B1)-1)
Isso remove o primeiro dígito de B1.
A fórmula em D1 é:
=IFERROR("TRUE, "&ADDRESS(MATCH(MID(A1,2,SEARCH("-",A1)-2),C$1:C$10,0),COLUMN(B1)),FALSE())
Observe que, embora isso deva produzir a saída desejada, eu recomendaria a divisão de TRUE / FALSE e a referência de célula em duas colunas. Portanto, explicarei apenas a ADDRESS
part, que fornecerá a referência da célula se uma correspondência for encontrada ou um erro.
VLOOKUP
não é útil aqui, porque retornará um valor na mesma linha do valor correspondente. MATCH
, por outro lado, retorna a linha do valor correspondente.
-
MID(A1,2,SEARCH("-",A1)-2)
retorna a subseqüência de A1, começando com o segundo caractere, até e excluindo a primeira ocorrência de "-". Este é o valor que estamos procurando ( lookup_value
).
-
MATCH(lookup_value, C$1:C$10, 0)
retornará a linha da primeira ocorrência de lookup_value
. Como não podemos aplicar uma função ao intervalo e o Excel não suporta expressões regulares, precisamos da coluna auxiliar C. O último parâmetro ( 0
) é necessário porque os valores não são classificados. Observe que o valor da linha retornada é relativo ao intervalo especificado, portanto, se o intervalo não iniciar na linha 1, você deverá contabilizá-lo (por exemplo, adicionando ROW([first cell])-1
ao resultado de MATCH
).
-
ADDRESS(matched_row, COLUMN(B1))
produz a referência da célula. Você pode usar o número absoluto da linha em vez de COLUMN(B1)
, se desejar, mas isso não seria tão legível quanto humano.
Você tem que decidir por si mesmo quais referências devem ser absolutas ou relativas.