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
1
para 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
-
1
para 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
LOOKUP
para encontrar o1
acima.
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 -
C3
e#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.