El primero paso para encontrar la fórmula, está en diferenciar dos casos:
La primera fila en la que se encuentra un determinado material
En la primera fila en la que se encuentra el material, lo que debemos hacer es determinar si la existencia en esa ubicación es mayor o igual al requerimiento, en cuyo caso la fórmula deber devolver el requerimiento. En caso contrario la fórmula debe devolver la existencia.
Las demás filas
Si el material ya ha sido encontrado en una fila anterior, lo que debemos hacer es determinar si la diferencia entre el requerimiento y la cantidad a mover en las ubicaciones anteriores es menor o igual a la existencia en la ubicación actual. En este caso, la fórmula debe devolver la diferencia; en caso contrario, la fórmula debe devolver la existencia de la ubicación actual.
Piensa detenidamente y verás que con estas dos observaciones la fórmula casi se revela sola. Y a continuación la mostramos en todo su esplendor. En la celda D2 la fórmula sería:
=SI(CONTAR.SI($A$2:A2,A2)=1,SI(C2-BUSCARV(A2,I:J,2,0)>=0,BUSCARV(A2,I:J,2,0),C2),SI(BUSCARV(A2,I:J,2,0)-SUMAR.SI($A1:A$2,A2,$D1:D$2)>=C2,C2,
BUSCARV(A2,I:J,2,0)-SUMAR.SI($A1:A$2,A2,$D1:D$2)))
Sí, es una fórmula un poco larga, pero es bastante efectiva. Te invito a que juegues un poco con las cantidades en existencia y con las cantidades en stock para que veas que en todos los casos, la fórmula devuelve el resutlado correcto. También puedes ver que si se agregan más líneas a los requerimientos de material o si se agregan más ubicaciones de material con sus existencias, la fórmula también responde correctamente. Aún más, la fórmula no falla si se ingresan materiales en filas no contiguas. Y observa que todo esto lo hemos hecho con dos sencillas observaciones que resumen la situación general.
Fernando (sábado, 07 marzo 2020 20:53)
Este caso es excelente. La verdad no logré dar con la respuesta correcta pero estuve muy cerca.