Para o benefício dos leitores que não entendem a fórmula do RyanMark, é
- Encontrar a posição de cada um dos nomes dos fabricantes
em um determinado nome de produto.
Isto resulta em
- um valor de
1para o nome do fabricante que começa o nome do produto (porque aparece no 1 st), - números mais altos para nomes de outros fabricantes que aparecem no nome do produto (porque aparecem mais tarde, em números de posição mais alta) e
- um código de erro
#VALUE!para nomes de fabricantes que não aparecem no nome do produto.
- um valor de
- Invertendo cada um dos itens acima (dividindo 1 por ele), resultando em
-
1para o nome do fabricante que começa o nome do produto (que é o que queremos encontrar), - números positivos mais baixos para nomes de outros fabricantes que aparecem no nome do produto (porque 1 dividido por um número maior que 1 produz uma proporção menor que 1) e
- um código de erro
#VALUE!para nomes de fabricantes que não aparecem no nome do produto.
-
- Usando
LOOKUPpara encontrar o1acima.
Por exemplo, para a célula A4 (correspondente a "Mike's Fun Toys" na célula B4 ),
na primeira imagem, nós temos, em ordem,
-
1, porque “Mike's” (C2) começa “Mike's Fun Toys”, -
%código%,
porque “Fun” (
8) aparece no 8º personagem de “Mike's Fun Toys”, e -
C3e#VALUE!, porque "Cat" (#VALUE!) e "Brown" (C4) não aparecem em "Mike's Fun Toys".
Inversão que resulta em C5 , 1 ( 0.125 ), 1/8 e #VALUE! .
Em seguida, ele procura o #VALUE! nessa matriz.
Isso “deveria” funcionar, porque 1 é o primeiro resultado,
e "Mike's" é o primeiro nome na coluna 1 .
O problema pode ser visto na página de ajuda de C :
For the LOOKUP function to work correctly, the data being looked up must be sorted in ascending order.
e claramente LOOKUP seguido por 1 não é classificado em ordem crescente.
Como o 0.125 sugere, podemos resolver isso usando LOOKUP .
A fórmula que você quer, que usa a mesma abordagem básica de sua fórmula
(exceto sem a inversão, que é desnecessária), é
=INDEX($C$2:$C$5, MATCH(1, FIND($C$2:$C$5,$B2), 0))
O terceiro argumento para MATCH é chamado de "match_type".
Eu configurei para MATCH aqui,
o que significa que 0 procurará o primeiro elemento na matriz
isso é exatamente MATCH ,
e não assumirá que a matriz está ordenada.
Esta é uma fórmula de matriz então você tem que pressionar Ctrl + Deslocar + Enter quando você entra.

