Debo repetir una condición para varias columnas, pero debe trabajar hacia atrás de la W a la L

Quisiera que me ayudarán con este problemilla:

Tengo una tabla con los 12 meses en la cual mis columnas siempre son fijas, en un módulo puse este código para que me obtenga el mes actual

Sub OBTENMES() Dim mes As String

'REGISTRA LA ENTRADA DEL MES PARA POSICIONAR A LA CELDA CORRESPONDIENTE

mes = InputBox("Introduce por favor el mes actual usando las primeras tres letras" _ & vbCrLf & _ "Ejemplo: Enero=ENE Diciembre=DIC")

'CONVIERTE A MAYÚSCULAS

mes = UCase(mes)

'BUSCA EL MES OBTENIDO DENTRO DEL RANGO

Range("L1:W1").Find(What:=mes, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Activate

End Sub

Lo que deseo hacer es que me cumpla esta condición

"SI=(MESACTUAL<0,MESANT+MESACTUAL,MESACTUAL))"

Donde si mi mes actual que obtiene mediante el inputbox es menor que 0 entonces a la columna anterior le sume la cantidad de la celda actual, y así sucesivamente hacia atrás hasta que obtenga un número positivo, en caso de que el numero encontrado en el mes actual sea positivo que se quede con su valor normal, pero que busque en las columnas anteriores cualquier saldo negativo, hasta que llegue al final de los registros.

Entonces todos los números negativos que me entrega como resultado debo cambiarlos a 0

1 Respuesta

Respuesta
1

Me perdí un poco, cuando dices “Donde si mi mes actual que obtiene mediante el inputbox es menor que 0”
Lo que tú obtuviste con el inputbox fueron 3 letras “ENE” “FEB”, etc, ahora quieres preguntar "SI=(MESACTUAL<0,”, pero aquí falta algo, supongo que encuentras el mes y de ahí te vas a una fila y en esa fila hay un valor, y entonces si, tomas ese valor “MESACTUAL” y preguntas si < 0, pero esto lo estoy suponiendo.
Puedes poner algunos ejemplos de lo que tienes y lo que esperas que haga la macro, de esta forma:
L M N O P Q R S T U V W
1 ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC
2
3
4
5
Llena el cuadro anterior con datos reales y pon los dos casos, cuando es menor a 0 y cuando no lo es, entre más ejemplos pongas más fácil podré entender.

L M N O P Q R S T U V W

ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC

1 1500 100 0 -250 -25 -2000 0 0 3704 133.11 -250 -560

2 1033 -1033 437 0 0 1398 2191 2071 -14074 0 1030 1170

EN EL INPUT BOX EL USUARIO ME INGRESARÍA EL MES ACTUAL (EN ESTE CASO TECLEARA NOV) Y MI CELDA SE POSICIONA EN NOV

LO QUE TIENE QUE HACER ES:

1.- COMPARAR SI EL VALOR CORRESPONDIENTE A LA FILA 1 COLUMNA V ES POSITIVO O NEGATIVO

2.- COMO EN ESTE CASO ES NEGATIVO TIENE QUE SUMARLO A LA COLUMNA U Y PONER EL VALOR NUEVO EN LA COLUMNA U

EN CASO DE QUE FUERA POSITIVO CONSERVA SU VALOR Y PASARÍA A LA COLUMNA ANTERIOR A REALIZAR LA MISMA COMPARACIÓN Y LA MISMA OPERACIÓN HASTA QUE LLEGUEMOS AL MES ENERO

3.- REALIZAR LOS PASOS 1 Y 2 CON TODOS LOS REGISTROS EXISTENTES EN LA TABLA (LOS CUALES SON VARIABLES)

4.- AL FINALIZAR LAS OPERACIONES DE TODOS LOS REGISTROS, CONVERTIR A 0 LOS NEGATIVOS

ESPERO QUE TE HAYA QUEDADO MÁS CLARA MI PREGUNTA Y MUCHAS GRACIAS DE ANTEMANO SI ME PUDIERAS AYUDAR

En el ejemplo 1:
NOV = -250
OCT = 133.11
Dices: “TIENE QUE SUMARLO A LA COLUMNA U Y PONER EL VALOR NUEVO EN LA COLUMNA U”
Entonces
NOV = -250
OCT = 133.11 -250
Quedaría
NOV = -250
OCT = -116.89
SEP = 3704
El siguiente mes:
NOV = -250
OCT = -116.89
SEP = 3704 -116.89
Quedaría
NOV = -250
OCT = -116.89
SEP = 3587.11
Y al final dices: “AL FINALIZAR LAS OPERACIONES DE TODOS LOS REGISTROS, CONVERTIR A 0 LOS NEGATIVOS”
Entonces queda:
NOV = 0
OCT = 0
SEP = 3587.11
Nuevamente te pido de favor, que completes el ejercicio con los dos ejemplos que me pusiste. Ya me dijiste cómo está, ahora dime cómo deben quedar (antes de convertir a 0 los negativos)
Y luego me dices cómo quedaría cada ejemplo cuando se convierten a 0 los negativos.
Espero tus comentarios.
Saludos. Dam

Estos son los resultados antes de convertir a cero

ene feb mar abr may jun jul ago sep oct nov dic

1 -675 -2175 -2275 -2275 -2025 -2000 0 0 3470.22 -116.89 -250 -560

2 -7977 -9010 -7977 -8414 -8414 -8414 -9812 - 12003 -14074 0 1030 1170

Y estos serían después de convertirlos a cero:

ene feb mar abr may jun jul ago sep oct nov dic

1 0 0 0 0 0 0 0 0 3470.22 0 0 -560

2 0 0 0 0 0 0 0 0 0 0 1030 1170

Te doy el enlace del archivo que contiene la macro.
En la hoja1 van los datos de prueba, puedes copiar en esta misma hoja tus datos para que los puedas procesar.
En la celda K1, puse un botón para que ejecutes la macro.
Sólo para aclarar, en el ejemplo1 que me enviaste el valor de septiembre debe ser 3587.11
https://www.dropbox.com/s/b3vw1dgg4d55jlw/meses%20en%20reversa.xls[url=https://www.dropbox.com/s/b3vw1dgg4d55jlw/meses%20en%20reversa.xls&#93;
Saludos.Dam
Si es lo que necesitas, podrías de favor, finalizar la pregunta.Gracias[/url]

Aún no queda , con los datos reales de los cuales ya tengo el resultado manual no coinciden, porque los meses de enero y febrero donde hay números positivos me quedan todos en cero con la macro, muchas gracias por tu ayuda.

alguna forma de que te pueda enviar un archivo para que veas el caso y los resultados ya revisados de este ?

Puedes escribir los valores de dic a ene que no quedan, para que yo los pueda probar y ver el motivo y hacer la corrección.

Si puedes poner varios ejemplos de los que no quedan, es mucho mejor.

También escribe cuáles si quedan bien.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas