.23.05.17
Buenas, Fabricio
Es una situación habitual que -como suele pasar con MS Excel- puede resolverse de distintas maneras:
1.- Ordenar Base
Esta parece la más pedestre en la cual ordenarías la base por fecha en forma descendente. Claro que puede pasar que la base tenga datos del mes actual y, en tal caso, el valor que traería seria el de este mes y no el del anterior.
2.- Columna Auxiliar
En este caso, a la izquierda de tu base de datos colocarías una fórmula que junte el código de articulo y el mes (más año, agregaría) de cada registro.
Supongamos que ese código estuviera en la columna B y cada fecha en la columna E, poné en la columna A una fórmula como esta:
=B3&"-"&AÑO(E3)&"-"&MES(E3)
Asignale el formato deseado, luego copia esta celda y pegala en las restantes de esta misma columna.
Así tendrás una combinación de código y año/mes por cada registro para hacer la búsqueda por esta columna. LA ventaja de esta solución es que podés seguir agregandole factores diferenciadores, sin perjuicio de que ordenés la base como te sea más útil o, directamente, no la ordenes.
Desde luego, la fórmula de buscarv que usés deberá seguir ese patrón Codigo-año-mes.
Así si la fecha de hoy estuviera como en el ejemplo en I13 y el primer código a buscar en la celda I15, donde querés el resultado colocá esta fórmula:
=BUSCARV(I15&"-"&AÑO($I$13)&"-"&MES($I$13)-1;$A$3:$G$37;6;0)
[Fijate si usás comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Esta fórmula traerá el importede ese código para el mes anterior... siempre que no sea Enero y, claro, que el código y fecha existan...
Para evitar un error cuando el mes actual sea enero, la fórmula sería como la de la imagen:
Pero para evitar ambos problemas la fórmula final debería ser como esta (las otras eran sólo al efecto didáctico):
=SI(ESNOD(BUSCARV(I15&"-"&AÑO($I$13)-SI(MES($I$13)=1;1;0)&"-"&SI(MES($I$13)=1;12;MES($I$13)-1);$A$3:$G$37;6;0));"No existe este producto en el mes anterior";BUSCARV(I15&"-"&AÑO($I$13)-SI(MES($I$13)=1;1;0)&"-"&SI(MES($I$13)=1;12;MES($I$13)-1);$A$3:$G$37;6;0))
En realidad es la misma fórmula anterior, solo que la encerré dentro de ESNOD que me permite capturar el error #N/A, en cuyo caso el condicional coloca el mensaje que quieras ponerle. Si no trae el resultado.
Comentame si mi solución resuelve lo que buscás -y, en tal caso, agradeceré que califiques mi contribución- o escribime de nuevo aquí, si necesitas más apoyo con esto.
Un saludo
Fernando
.
(Buenos Aires, Argentina)
.