. 16.01.17 #Listar con fórmulas
Buenas, Erika
Como suele suceder con MS Excel, un mismo planteo puede resolverse de distintas maneras.
El que planteas es uno de esos casos.
Podría desarrollarse una rutina de VBA que coloque en ese cuadro, los lotes que encontrare. Eso demandaría ejecutarla cada vez que cambie la selección o se agreguen datos a la base.
La solución que te propongo, en cambio, es automática, basadas en un par de fórmulas a aplicar a tu planilla.
Haría falta que insertes una columna a la izquierda de la base que luego podrás ocultar para que no altere la apariencia de tu hoja.
En ella colocaremos dos tipos de fórmulas:
1.- Fórmulas de numeración (área celeste):
En el sector de datos -en amarillo- en esa columna A que agregaste, coloca al lado del primer registro la siguiente fórmula (en A16, por ejemplo):
=SI(B16=$C$6;MAX($A$15:A15)+1;0)
Donde B16 es la primera celda de tu base donde está el primer código, C6 ahora es la celda donde indicas la clave de producto y C8 es la de la descripción (en tu ejemplo me parece que están invertidas). De paso, teniendo en C6 la clave C8 puede obtenerse por un simple BUSCARV. (=BUSCARV(C6;$B$16:$E$5000;2;0))
[Considera si usas comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Asígnale el formato deseado y, luego, copia esta celda y pégala en las restantes de esta misma columna.
Aquella fórmula pegada a lo largo de la base, numerará secuencialmente cada aparición del código que coloques en C6. Como ventaja, no es necesario que la base esté ordenada por código).
2. Fórmulas de búsqueda de lote y cantidad:
Coloca primero, en A6 hasta la última fila del cuadro que tengas definido para listar los lotes (area verde de la imagen) una secuencia de números arrancando en 1.
Luego, donde quieres que te traiga el primer número de lote para esa selección (x ejemplo en E6), la siguiente fórmula de búsqueda:
=SI(ESNOD(BUSCARV($A6;$A$16:$G$5000;1;0));"";BUSCARV($A6;$A$16:$F$5000;4;0))
Y al lado, para mostrar la cantidad, la misma fórmula pero cambiándole la columna a traer:
=SI(ESNOD(BUSCARV($A6;$A$16:$G$5000;1;0));"";BUSCARV($A6;$A$16:$F$5000;5;0))
Luego, copia estas dos celdas y pegalas en el resto del cuadro donde listar los lotes.
Como verás, ambas hacen una primera búsqueda para ver si el número de orden existe en la base. Si no lo encuentra, no colocará nada.
Deberías considerar el caso contrario, cuando la cantidad de lotes supere las lineas que tienes disponibles en tu cuadro resumen.
Bien, es más largo de explicar que de hacer. La ventaja es que bastará cambiar la clave de producto en el cuadro superior para que aparezcan los lotes en el cuadro de detalle de lotes.
Saludos
Fernando
.