Verifique qué palabra clave, de una lista, comienza una celda y devuelva la palabra clave coincidente

1

Estoy tratando de tomar una lista de productos y extraer su fabricante desde el comienzo del nombre del producto. Cada nombre de producto comienza con su fabricante. Esto se complica por el hecho de que algunos artículos tienen otros fabricantes en el cuerpo del nombre; Necesito ver con qué comienza el artículo. Estoy tratando con más de 50,000 artículos y más de 3,000 fabricantes. La fórmula que tengo hasta ahora es:

=LOOKUP(1,1/(FIND($C$2:$C$5,B2)),$C$2:$C$5)

Esto funciona algunas veces pero no otras. Por ejemplo, en la siguiente hoja de trabajo, las filas 2 y 3 son correctas, pero la fila 4 no lo es. El resultado en la celda  A4para "Mike's Fun Toys" (en la celda B4) debería ser "Mike's", pero aparece como "Fun".

Hoja de trabajo con fabricantes listados en orden alfabético inverso

(Aquí están los datos en forma de texto que puede copiar y pegar:

+---+---------+-----------------+---------------+
|   |    A    |        B        |       C       |
+---+---------+-----------------+---------------+
| 1 | Formula | Items           | Manufacturers |
+---+---------+-----------------+---------------+
| 2 | Brown   | Brown Cat Toys  | Mike's        |
| 3 | Cat     | Cat Fun Toys    | Fun           |
| 4 | Fun     | Mike's Fun Toys | Cat           |
| 5 |         |                 | Brown         |
+---+---------+-----------------+---------------+

)

Pero cuando cambio el orden de la columna  C(Fabricantes):

Hoja de trabajo con los fabricantes enumerados en orden alfabético (normal)

la fila 4 se vuelve correcta ("Mike"), pero la fila 2 sale mal.

La columna A tiene la fórmula todo el camino hacia abajo. Resultados previstos:

A2 - Brown
A3 - Cat
A4 - Mike's

¿Cómo puedo hacer que la fórmula funcione independientemente del orden de la columna  C?

theRyanMark
fuente
¿Tiene sentido ahora?
theRyanMark
Gracias por agregar la explicación. Tenga en cuenta que el texto entre corchetes cuando incrusta una imagen ![…]es el "texto alternativo", texto alternativo que generalmente no aparece cuando se muestra la imagen. (El texto alternativo se muestra cuando el archivo de imagen no se puede recuperar del servidor web (p. Ej., Un error 404) o cuando la visualización de la imagen está desactivada en el navegador. Algunas personas hacen esto para minimizar el tráfico de su red; las personas ciegas lo hacen por razones obvias razones.) Entonces, por cierto, es bueno especificar texto alternativo que describa la imagen, en lugar de solo comentarla. … (Continúa)
Scott
(Continúa) ... PD: Estaba confundido por su afirmación "Me gustaría una forma de restringir la fórmula anterior al comienzo de la celda". Porque su fórmula (como describo en mi respuesta ) está mirando correctamente el principio La celda del nombre del producto.
Scott
Estaba tratando de decir que solo quiero devolver coincidencias a la palabra clave si está en la posición más a la izquierda de la cadena de celdas. Porque sé que todas las celdas comienzan con el fabricante.
theRyanMark

Respuestas:

1

Para el beneficio de los lectores que no entienden la fórmula de RyanMark, es

  • Encontrar la posición de cada uno de los nombres de los fabricantes en un nombre de producto dado. Esto resulta en
    • un valor de 1por el nombre del fabricante que comienza el nombre del producto (ya que aparece en la parte 1 carácter st),
    • números más altos para los nombres de otros fabricantes que aparecen en el nombre del producto (porque aparecen más tarde, en números de posición más altos), y
    • un #VALUE!código de error para los nombres de los fabricantes que no aparecen en el nombre del producto.
  • Invertir cada uno de los anteriores (dividiendo 1 por él), lo que resulta en
    • 1 para el nombre del fabricante que comienza el nombre del producto (que es el que queremos encontrar),
    • números positivos más bajos para los nombres de otros fabricantes que aparecen en el nombre del producto (porque 1 dividido por un número mayor que 1 produce una relación menor que 1), y
    • un #VALUE!código de error para los nombres de los fabricantes que no aparecen en el nombre del producto.
  • Utilizando LOOKUPpara encontrar el 1en lo anterior.

Por ejemplo, para la celda A4(correspondiente a "Mike's Fun Toys" en la celda B4), en la primera imagen, obtenemos, en orden,

  • 1, porque "Mike's" ( C2) comienza "Mike's Fun Toys",
  • 8, porque "Fun" ( C3) aparece en el octavo personaje de "Mike's Fun Toys", y
  • #VALUE!y #VALUE!, porque "Cat" ( C4) y "Brown" ( C5) no aparecen en "Mike's Fun Toys".

Inversión que da como resultado 1,  0.125( 1/8)  #VALUE!y #VALUE!. Luego busca el 1en esa matriz. Este "debería" funcionar, porque 1es el primer resultado, y "Mike" es el primer nombre en la columna  C.

El problema se puede ver en la página de ayuda para LOOKUP:

Para que la función BUSCAR funcione correctamente, los datos que se buscan deben ordenarse en orden ascendente.

y claramente 1seguido por 0.125no está ordenado en orden ascendente.

Como LOOKUPsugiere, podemos resolver esto usando MATCH. La fórmula que desea, que utiliza el mismo enfoque básico que su fórmula (excepto sin la inversión, que es innecesaria), es

=INDEX($C$2:$C$5, MATCH(1, FIND($C$2:$C$5,$B2), 0))

El tercer argumento de MATCHse llama "match_type". Lo configuré 0aquí, lo que significa que MATCHbuscará el primer elemento de la matriz que sea exactamente 1y no supondrá que la matriz esté ordenada.

Esta es una fórmula de matriz, por lo que debe presionar Ctrl+ Shift+ Enter cuando la ingresa.

Scott
fuente
Gran explicación <aplausos> y +1.
Bandersnatch