Foros


Inicio » Excel

Página: 1

Mensaje Autor

Arriba
10/Ago/05 20:48
Suma acumulativa basada en fechas

Hola..Chequen esto espero les sirba de algo..

Solo: Cambiar...( ; ) por ( , ) y ( ), en algunos casos...

Suma acumulativa basada en fechas
Hay trabajos propios de hoja de cálculo que requieren introducir una fecha en cada columna de datos para luego ir acumulando una serie de valores en otra columna y sumándose fila a fila. Esto, que parece sencillo, se complica si lo que se pretende es tener una columna con los valores acumulados por fecha, es decir, para varias fechas iguales, el valor se acumula hasta que se inicia una fila con fecha posterior.
Para hacerlo más gráfico, pongamos por caso el control de ventas de productos en un establecimiento. Lo primero que hay que hacer es crear una columna auxiliar en una columna que no se utilice (por ejemplo, la columna Z) basada en interruptores (flags). Este tipo de columnas auxiliares son muy útiles pero hay que alejarlas de la vista principal para que no estorben. Por otra parte, vamos a suponer que los datos deseados van a ir en la columna H. Esta es la vista parcial de la hoja:

A B C D E F G H I ... Z
1
2
3 FECHA PAG. Nº BASE IVA LIQUIDO ACUMULADO ACUMULADO POR DIA IDEM
4 02/01/98 P 1 819 131 950 950 950 X
5 02/01/98 P 2 1.293 207 1.500 2.450 2.450 Y
6 02/01/98 P 3 1.379 221 1.600 4.050 4.050 4.050 Y
7 03/01/98 P 4 1.897 303 2.200 6.250 2.200 X
8 03/01/98 P 5 5.000 800 5.800 12.050 8.000 Y
9 03/01/98 P 6 1.595 255 1.850 13.900 9.850 Y
10 03/01/98 P 7 2.259 361 2.620 16.520 12.470 12.470 Y
11 04/01/98 P 8 1.897 303 2.200 18.720 2.200 X
12 04/01/98 P 9 1.121 179 1.300 20.020 3.500 Y
13 04/01/98 P 10 1.595 255 1.850 21.870 5.350 5.350 Y
14 05/01/98 P 11 2.586 414 3.000 24.870 3.000 X
15 05/01/98 P 12 3.276 524 3.800 28.670 6.800 Y
16 05/01/98 P 13 1.121 179 1.300 29.970 8.100 Y
17 05/01/98 P 14 4.655 745 5.400 35.370 13.500 Y
18 05/01/98 P 15 560 90 650 36.020 14.150 Y
19 05/01/98 P 16 38.966 6.234 45.200 81.220 59.350 Y
20 05/01/98 P 17 13.190 2.110 15.300 96.520 74.650 74.650 Y

Para este trabajo se utilizarán 2 fórmulas, una es la que va en la columna Z y otra la que va en H.
En la columna Z, el primer valor es (debe ser) siempre fijo. Aquí lo vamos a llamar X, siendo Y el otro interruptor. Pero se pueden llamar A y B, o bien PEPE y JUAN. El funcionamiento será idéntico. La fórmula empleada desde el 2º valor de Z en adelante es la siguiente:
=SI(($A4<$A5);"X";"Y")
Esta fórmula permite saber en qué momento se ha producido un cambio de fecha en la columna A.
En la columna H van los valores a mostrar ya calculados basándose en el contenido de la columna Z. La fórmula del primer elemento (H4) es:
=SI($Z4="X";$F4;SI(Y($Z3="Y";$Z4="Y");$H3+$F4;$F4+$F3))
Esta fórmula comprueba el valor de su fila en Z y acumula el valor siempre que no haya cambio de fecha. En el momento que cambie la fecha, el valor se reinicializa a cero y comienza una nueva acumulación. No hay que confundir el operador lógico Y con la letra "Y" entrecomillada.
En algunos casos, es posible que se prefieran dejar en blanco aquellas celdas de H que no totalizan. Para este propósito se incluyen en la columna I los mismos valores que en H pero dejando en blanco las celdas que no suman el total general. La fórmula en este caso es:
=SI($A4=$A5;"";SI($Z4="X";"";SI(Y($Z3="Y";$Z4="Y");$H3+$F4;$F4+$F3)))
Ahora sólo hay que decidir si trabajará con la columna H o con la I. Si se prefiere la H, basta con borrar la I. Si se prefiere la I, basta borrar la H y mover los valores de I hacia H.
 
La sonrisa cuesta menos que la electricidad y da más luz. Desde...Tijuana, B.C.
 
Perfil

jlp
Cabo

Mensajes: 48
Ingresó: Mayo 18, 2004
Ubicación:

Conectado

Agregar como amigo

Arriba
15/Ago/05 19:48
Re: Suma acumulativa basada en fechas

=SUMAENTREFECHAS(Rango Fechas,Rango a Sumar,Fecha Inicial,Fecha Final)
Explicación: devuelve la suma de un rango según dos fechas indicadas.
Donde el código a pegar en el editor de Visual Basic sería:
[code:1:d5d39a0113]Function SUMAENTREFECHAS(rango_fechas, rango_suma, fecha_inf, fecha_sup)
Dim i As Integer, Total As Double
Total = 0
For i = 1 To rango_suma.Count
If rango_fechas(i) >= fecha_inf And rango_fechas(i) <= fecha_sup Then Total = Total + rango_suma(i)
Next i
SUMAENTREFECHAS = Total
End Function
[/code:1:d5d39a0113]
 
«Antes que cambien los reinos, los hombres deberán cambiar» ═╬═
 
Perfil

ByPaco
Teniente Coronel

Mensajes: 2132
Ingresó: Junio 05, 2004
Ubicación:

Conectado

Agregar como amigo

Arriba
15/Ago/05 21:20
Re: Suma acumulativa basada en fechas

Gracias, por el codigo......Bypaco

Se te agradece..

Un Saludo....

Jose Luis Padilla
 
La sonrisa cuesta menos que la electricidad y da más luz. Desde...Tijuana, B.C.
 
Perfil

jlp
Cabo

Mensajes: 48
Ingresó: Mayo 18, 2004
Ubicación:

Conectado

Agregar como amigo

Arriba
15/Ago/05 21:20
Re: Suma acumulativa basada en fechas

Gracias, por el codigo......Bypaco

Se te agradece..

Un Saludo....

Jose Luis Padilla
 
La sonrisa cuesta menos que la electricidad y da más luz. Desde...Tijuana, B.C.
 
Perfil

jlp
Cabo

Mensajes: 48
Ingresó: Mayo 18, 2004
Ubicación:

Conectado

Agregar como amigo

Arriba
16/Ago/05 10:09

esta macro se graba como complemento?
 
Perfil

Edgar_Ruben10
Subteniente

Mensajes: 175
Ingresó: Marzo 04, 2005
Ubicación:

No Conectado

Agregar como amigo

Arriba
16/Ago/05 10:23

[quote:5390aaba86="Edgar_Ruben10"]esta macro se graba como complemento?[/quote:5390aaba86]
Si se podria, aunque como es muy poca información lo puedes grabar en el libro donde lo utilizarás
 
«Antes que cambien los reinos, los hombres deberán cambiar» ═╬═
 
Perfil

ByPaco
Teniente Coronel

Mensajes: 2132
Ingresó: Junio 05, 2004
Ubicación:

Conectado

Agregar como amigo


Página: 1