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 A4
para "Mike's Fun Toys" (en la celda B4
) debería ser "Mike's", pero aparece como "Fun".
(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):
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
?
fuente
![…]
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)Respuestas:
Para el beneficio de los lectores que no entienden la fórmula de RyanMark, es
1
por el nombre del fabricante que comienza el nombre del producto (ya que aparece en la parte 1 carácter st),#VALUE!
código de error para los nombres de los fabricantes que no aparecen en el nombre del producto.1
para el nombre del fabricante que comienza el nombre del producto (que es el que queremos encontrar),#VALUE!
código de error para los nombres de los fabricantes que no aparecen en el nombre del producto.LOOKUP
para encontrar el1
en lo anterior.Por ejemplo, para la celda
A4
(correspondiente a "Mike's Fun Toys" en la celdaB4
), 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 el1
en esa matriz. Este "debería" funcionar, porque1
es el primer resultado, y "Mike" es el primer nombre en la columnaC
.El problema se puede ver en la página de ayuda para
LOOKUP
:y claramente
1
seguido por0.125
no está ordenado en orden ascendente.Como
LOOKUP
sugiere, podemos resolver esto usandoMATCH
. La fórmula que desea, que utiliza el mismo enfoque básico que su fórmula (excepto sin la inversión, que es innecesaria), esEl tercer argumento de
MATCH
se llama "match_type". Lo configuré0
aquí, lo que significa queMATCH
buscará el primer elemento de la matriz que sea exactamente1
y 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.
fuente