.
Buenos días,
Me parece que es la típica aplicación de la función BUSCARV(), sobre todo por la existencia de un ID común.
Para hacerlo simple, vamos a suponer que tu listado del stock de Almacen estuviese en la "Hoja1" del libro 2 y en el rango A6:G240.
Y si el primer ID a consultar estuviera en la celda B7 de tu archivo de stock en Tienda, escribe ésta fórmula en la celda J7 :
=BUSCARV($B7;[Libro2.xlsx]Hoja1!$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. Desde luego, tus direcciones serán distintas, pero será cuestión que las adaptes a tu caso.
Luego, asígnale el formato deseado y, luego, copia esta celda y pégala en las restantes de esta misma columna. Quedaría algo como esto:
Esta fórmula creará un vínculo con el segundo archivo y, cuando abras ambos archivos, te actualizará el valor.
Entonces, la función Buscarv necesita tres argumentos más un cuarto opcional.
El primero es el valor que se busca en la base; ésta, 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.
El tercer argumento indica qué columna de la base indicada debe ser mostrada donde está la fórmula. Cómo intento mostrar las descripciones, indiqué la columna 7, para que traiga el dato del stock que tengas en el almacen. Si pegas esta misma fórmula en otra celda y cambias el número de columna, traerá lo que haya 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 B7. 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($B7;[Libro2.xlsx]Hoja1!$A$6:$G$240;7;FALSO));"ID inexistente";BUSCARV($B7;[Libro2.xlsx]Hoja1!$A$6:$G$240;7;FALSO))
Bien, esta fórmula devolverá "ID inexistente"; si el código o nombre en la celda B7 no existe en la columna G de la base que consultas, pero si lo encuentra actualiza el valor
Finalmente aclaro que ESNOD() 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 uno u otro mensaje según el caso.
Esta última versión te dirá si está o no en Almacén y, en caso de estar, cúantas unidades indica en la columna 7.
.