EXTRAER SALDOS NEGATIVOS Y POSITIVOS EN LOS MOVIMIENTOS DE UNA CUENTA

Hola a todos.

Llevo varios post escritos en los que el tema a tratar son las consultas de los lectores. Creo que esto es muy importante, dado que son casos totalmente reales y seguro que se dan más frecuentemente.

Para el caso de hoy voy a presentar un pequeño proceso que extrae los saldos positivos y negativos de los movimientos de una cuenta contable. Esta consulta me la formuló una lectora, que decía así:

Buenos días:

Tengo una relación de cuentas y movimientos por fechas y necesitaría poner los importes negativos en una columna y los positivos en otra. Y también que aparezca el sumatorio de los saldos al final de cada columna, ¿podrías ayudarme?. Te envío un archivo de prueba.

Muchas gracias.

Para hacernos una idea de los datos, he confeccionado un pequeño ejemplo con datos generados aleatoriamente, estos serían los movimientos, las fechas y el resto de la información:

EXTRAER SALDOS NEGATIVOS Y POSITIVOS EN LOS MOVIMIENTOS DE UNA CUENTA.jpg

Para poder realizar la consulta que nos plantea nuestra compañera existen varios métodos, podemos usar un filtro avanzado (pero en VBA), podemos usar una consulta SQL usando ADO, o podemos usar un bucle que vaya acumulando los datos en la columna específica. Para este ejercicio usaré el tercer método, y en concreto una instrucción For-Next (podríamos utilizar cualquier otra estructura de bucle).

La macro que vamos a utilizar es la siguiente:

Sub extraer_saldos()
'Declaramos las variables a utilizar
Dim i As Integer, n As Integer, contador As Integer
'Desactivamos parpadeo de pantalla
Application.ScreenUpdating = False
'Hacemos referencia a la hoja Datos
With Sheets("DATOS")
'Cuando ejectemos la macro, limpiamos el área seleccionada si contiene información
fin = Application.CountA(.Range("A:A"))
If fin > 1 Then .Range("F2:I" & fin, "K2:N" & fin).Clear
'Si no marcamos el mes,lanzamos un mensaje de advertencia y paramos salimos del proceso
nMes = .Cells(2, 16).Value
If nMes = vbNullString Then
MsgBox ("INDICA EL MES (EN NÚMERO) PARA EXTRAER LA INFORMACIÓN"), vbExclamation
Exit Sub
End If
'iniciamos el bucle para pasar los datos con signo negativo a las columnas especificadas
n = 2
For i = 2 To fin
contador = 0
If .Cells(i, 4) < 0 And Month(.Cells(i, 2)) = nMes Then contador = contador + 1
If contador = 1 Then
.Range("F" & n) = .Cells(i, 1).Value
.Range("G" & n) = .Cells(i, 2).Value
.Range("H" & n) = .Cells(i, 3).Value
.Range("I" & n) = .Cells(i, 4).Value
n = n + 1
End If
Next i
'realizamos el sumatorio en la última celda de los importes negativos
RngNeg = Application.CountA(.Range("F:F"))
.Cells(RngNeg + 1, 9) = Application.WorksheetFunction.Sum(.Range("I2:I" & RngNeg))
With .Cells(RngNeg + 1, 9)
.Font.Bold = True
.Style = "Currency"
End With
'iniciamos el bucle para pasar los datos con signo positivo a las columnas especificadas
n = 2
For i = 2 To fin
contador = 0

If .Cells(i, 4) > 0 And Month(.Cells(i, 2)) = nMes Then contador = contador + 1
If contador = 1 Then
.Range("K" & n) = .Cells(i, 1).Value
.Range("L" & n) = .Cells(i, 2).Value
.Range("M" & n) = .Cells(i, 3).Value
.Range("N" & n) = .Cells(i, 4).Value
n = n + 1
End If
Next i
'realizamos el sumatorio en la última celda de los importes negativos
RngNeg = Application.CountA(.Range("K:K"))
.Cells(RngNeg + 1, 14) = Application.WorksheetFunction.Sum(.Range("N2:N" & RngNeg))
With .Cells(RngNeg + 1, 14)
.Font.Bold = True
.Style = "Currency"
End With
End With
Application.ScreenUpdating = True
End Sub

Cuando ejecutamos la macro, el resultado que obtener es el siguiente:

extraer-saldos-negativos-y-positivos-en-los-movimientos-de-una-cuenta1

Como podéis observar, hemos extraído los movimientos positivos y negativos del mes de febrero y realizado el sumatorio en cada columna para obtener el saldo final.

En este caso específico, la lectora solicitaba filtrar bajo el criterio del mes, pero podríamos realizar el filtro en base a la cuenta, el cliente, etc. Es en la macro donde podréis especificar nuevos condicionales que se adapten a vuestras necesidades.

Es un proceso simple y con muchas posibilidades, os animo a ir examinando el código poco a poco y, si es necesario, lo vayáis adaptando a vuestros trabajos.

Descarga el archivo pulsando en: EXTRAER SALDOS NEGATIVOS Y POSITIVOS EN LOS MOVIMIENTOS DE UNA CUENTA

 

Anuncios

2 pensamientos en “EXTRAER SALDOS NEGATIVOS Y POSITIVOS EN LOS MOVIMIENTOS DE UNA CUENTA

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s