.27.04.17
Buenos días, Jesús
Coincido en que lo que buscas es la típica aplicación de la función BUSCARV(), sobre todo por la existencia de un ID común. El hecho de que las bases estén desordenadas no constituye problema para que la función traiga el código EAN13 si, por supuesto, estuviera en la hoja madre.
Para hacerlo simple, vamos a suponer que tu listado madre estuviese en el rango A6:G240 de la "Hoja 2" que mencionaste
Y si el primer ID a actualizar estuviera en la celda A4 de la Hoja 1 (hija), escribe ésta fórmula en la celda C4 :
=BUSCARV($A4;'Hoja 2'!$A$6:$G$240;7;FALSO)
Ten en cuenta si usas comas o punto y coma para separar los argumentos. Yo usé ";" en este ejemplo. Asígnale el formato deseado y, luego, copia esta celda y pégale en las restantes de esta misma columna.
Una nota aparte merece ese formato "00X" que noto en el código de referencia. No sé si esos ceros antes del número son reales o es sólo un formato de celda que los completa cuando el ID tiene menos de tres cifras.
En cualquier caso, asegúrate de que el código que buscas esté escrito del mismo modo que en la base donde lo estás buscando.
Entonces, la función Buscarv necesita tres argumentos más un cuarto opcional.
El primero es el valor que se busca en la base
Esta, a su vez, es el segundo argumento de la fórmula. El uso del signo $ es para que siempre se refiera a ese rango aún copiando la fórmula a otras celdas/hojas. Notarás que excede la cantidad de elemento para que considere futuras incorporaciones. Desde luego puede estar en la misma hoja o en otra, pero en este caso deberás indicarle el nombre en la dirección de la base. Por ejemplo: 'Hoja 2'!$A$6:$G$240
Importante: Nota que la primera columna de la izquierda del rango de búsqueda es donde está la clave o condición a buscar.
El tercer argumento indica qué columna de la base indicada debe ser mostrada donde está la fórmula. Cómo intento completar los códigos EAN, indiqué la columna 2, para que traiga ese dato si estuviera en la segunda columna de la base". Si pegas esta fórmula en otra celda y cambias el número de columna, traerá lo que halla en ella.
Finalmente el cuarto argumento opcional, cuando está en 0 (Falso) obliga a una búsqueda exacta de lo que está en la celda A4. Si no encuentra ese código, la fórmula devolverá #N/A! (No disponible).
Para evitar ese #N/A! puedes usa esta variante que es similar:
=SI(ESNOD(BUSCARV($A4;'Hoja 2'!$A$6:$G$240;7;FALSO));"ID inexistente";BUSCARV($A4;'Hoja 2'!$A$6:$G$240;7;FALSO))
Bien, esta fórmula devolverá "ID inexistente"; si el código o nombre en la celda de búsqueda no existe en la columna correspondiente de la base que creaste. Pero, si lo encuentra, trae ese valor.
Para evitar ese #N/A! es que usé ESNOD() que es una función que devuelve verdadero si encuentra un error del tipo #N/A (NO Disponible) es decir que el dato no fue encontrado en la base de búsqueda. El condicional SI() es el encargado de mostrar un mensaje de error o el resultado según el caso.
.
Amigo Fejoal con poner a la matriz en rango absoluto hace que no sea necesario ordenar primero para usar la función buscarv - Adriel Ortiz Mangia
Hola, Ariel. Siempre uso rango absoluto con BUSCARV (como ves en la fórmula y en la explicación que suelo dar). Además, explícitamente le indiqué al usuario: "El hecho de que las bases estén desordenadas no constituye problema para que la función traiga el código". No sé si el comentario era para mí o no estoy entendiendo lo que me comentas. En todo caso, gracias por ayudar. Abrazo. Fer - fejoal
Si es para ti y gracias por la aclaración amigo - Adriel Ortiz Mangia