Codigo VBA para procesar archivo Excel

25/11/2004 - 13:25 por nanchoguti | Informe spam
Buenos días.

Requiero un código en VBA que pemita hacer lo siguiente. Actualmente lo
hacemos con tablas dinámicas pero no hace todo lo que queremos.

Tengo un archivo excel con más de 3000 registros, tiene información de
varios años.
Cada registro (fila) tiene lo siguientes campos:
Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.

Necesito que con base en una fecha que yo digite en una celda especifica,
calcule lo siguiente:
1) Calcule los 30 días anteriores y me saque un promedio por día del
dato1,dato2,dato3.Para un mismo día puedo tener varios registros

2) Saque el promedio de cada mes del año presente (con base a la fecha
digitada).

3) Saque el total del año.

Muchas gracias por su colaboración

Hernán Gutiérrez

Preguntas similare

Leer las respuestas

#1 KL
25/11/2004 - 15:14 | Informe spam
Me parece q todo esto se puede conseguir mediante unas formulas
relativamente simples. Solo una aclaracion: cuando hablas de calcular 30
dias anteriores y sacar el promedio por dia para dato1, dato2, etc... se
tiene q entender como por ejemplo:

1) para el Dato1 se suman todas las cantidades registradas entre la fecha
introducida y 30 dias atras y luego la suma se divide por 30 (o por el
numero de dias reales)? Y asi para el Dato2, Dato3, etc? De manera q si hay
3 datos el resultado seria 3 numeros.

o bien

2) para el Dato1 se suman todas las cantidadeds registradas en el dia X y se
saca el promedio? Y asi para cada dia dentro del periodo entre la fecha
introducida y 30 dias atras y luego para el Dato2, Dato3, etc? De manera q
si hay 3 datos el resultado podria ser 90 numeros.

Dime algo,
KL


""Hernán Gutiérrez"" wrote in message
news:O4g$
Buenos días.

Requiero un código en VBA que pemita hacer lo siguiente. Actualmente lo
hacemos con tablas dinámicas pero no hace todo lo que queremos.

Tengo un archivo excel con más de 3000 registros, tiene información de
varios años.
Cada registro (fila) tiene lo siguientes campos:
Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.

Necesito que con base en una fecha que yo digite en una celda especifica,
calcule lo siguiente:
1) Calcule los 30 días anteriores y me saque un promedio por día del
dato1,dato2,dato3.Para un mismo día puedo tener varios registros

2) Saque el promedio de cada mes del año presente (con base a la fecha
digitada).

3) Saque el total del año.

Muchas gracias por su colaboración

Hernán Gutiérrez



Respuesta Responder a este mensaje
#2 nanchoguti
25/11/2004 - 19:07 | Informe spam
KL : Muchas gracias por responder
Faltó explicar que actualmente/ lo hago con fórmulas matriciales y los
datos se obtienen, pero a medida que ha crecido el archivo la lentidud es
abismal a pesar de tener equipos bien configurados. Los usuarios ya no
soportan esto.

El asunto es que si el usuario digito 2004/11/25 obtenga los siguientes
datos en forma automática para poder graficar:
1) Promedio (o Desviacion Estandar) por día , para la fecha ejemplo sería
:
de Nov 25, Nov 24, Nov 23 Oct/25,Oct /24 (ültimos 30 días),
y para cada día existen muchos registros (se digitan cada 2 horas)
2) Total por cada mes , en este caso del año 2004
Ene, Feb, Mar ... Nov. (tener en cuenta que la fecha se digita con
formato aa/mm/dd
3) Tttal del año en curso.

Recuerda que el archivo es un histórico que puede tener hasta 2 años en
línea.

Cómo se podrá hacer esto desde VBA, cómo VBA puede almacenar el total de
los 30 días calendarios y de los meses del años en curso (en un vector o
arreglo).

Espero haberme hecho entender ... necesito una luz a este problema con
carácter urgente.


Muchas gracias


KL wrote:

Me parece q todo esto se puede conseguir mediante unas formulas
relativamente simples. Solo una aclaracion: cuando hablas de calcular 30
dias anteriores y sacar el promedio por dia para dato1, dato2, etc... se
tiene q entender como por ejemplo:

1) para el Dato1 se suman todas las cantidades registradas entre la fecha
introducida y 30 dias atras y luego la suma se divide por 30 (o por el
numero de dias reales)? Y asi para el Dato2, Dato3, etc? De manera q si hay
3 datos el resultado seria 3 numeros.

o bien

2) para el Dato1 se suman todas las cantidadeds registradas en el dia X y se
saca el promedio? Y asi para cada dia dentro del periodo entre la fecha
introducida y 30 dias atras y luego para el Dato2, Dato3, etc? De manera q
si hay 3 datos el resultado podria ser 90 numeros.

Dime algo,
KL


""Hernán Gutiérrez"" wrote in message
news:O4g$
> Buenos días.
>
> Requiero un código en VBA que pemita hacer lo siguiente. Actualmente lo
> hacemos con tablas dinámicas pero no hace todo lo que queremos.
>
> Tengo un archivo excel con más de 3000 registros, tiene información de
> varios años.
> Cada registro (fila) tiene lo siguientes campos:
> Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.
>
> Necesito que con base en una fecha que yo digite en una celda especifica,
> calcule lo siguiente:
> 1) Calcule los 30 días anteriores y me saque un promedio por día del
> dato1,dato2,dato3.Para un mismo día puedo tener varios registros
>
> 2) Saque el promedio de cada mes del año presente (con base a la fecha
> digitada).
>
> 3) Saque el total del año.
>
> Muchas gracias por su colaboración
>
> Hernán Gutiérrez
>
>
>
Respuesta Responder a este mensaje
#3 KL
25/11/2004 - 23:49 | Informe spam
Hernan,

He probado realizar la primera de tus tareas por medio de la siguiente
formula (30 fechas x 30 datos = 900 celdas):

=SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000))/SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000<>""))

y el macro q he escrito (mas abajo) y me resultan las formulas bastante mas
rapidas q el macro. La unica ventaja del macro es q no se recalcula cada dos
por tres.

Saludos,
KL

Const NumeroDatos = 30
Const NumeroDias = 30

Sub Promedios30Dias()
Dim Dato As Integer
Dim Registros As Range
Dim Registro As Range
Dim Dia As Single
Dim Contador As Single
Dim MiFecha As Range
Dim MiNumero()

Set MiFecha = Range("AG2")
Set Datos = Range("B1:AE1")
Set Registros = Range("A1:A4000")

Application.ScreenUpdating = False
For Dato = 1 To NumeroDatos
Dia = MiFecha.Value - NumeroDias
Contador = 1
While Dia < MiFecha.Value
ReDim MiNumero(0)
For Each Registro In Registros
If Registro.Value = Dia Then
'Idea de Leo Heuser
MiNumero(UBound(MiNumero)) _
= Registro.Offset(0, Dato).Value
ReDim Preserve MiNumero _
(UBound(MiNumero) + 1)
End If
Next Registro
MiFecha.Offset(Contador, 0).Value = Dia
If WorksheetFunction.Sum(MiNumero) = 0 Then
MiFecha.Offset(Contador, Dato).Value = 0
Else
MiFecha.Offset(Contador, Dato).Value = _
WorksheetFunction.Average(MiNumero)
End If
Dia = Dia + 1
Contador = Contador + 1
Wend
Next Dato
Application.ScreenUpdating = True
End Sub
-Fin Codigo


""Hernán Gutiérrez"" wrote in message
news:

KL : Muchas gracias por responder
Faltó explicar que actualmente/ lo hago con fórmulas matriciales y los
datos se obtienen, pero a medida que ha crecido el archivo la lentidud es
abismal a pesar de tener equipos bien configurados. Los usuarios ya no
soportan esto.

El asunto es que si el usuario digito 2004/11/25 obtenga los siguientes
datos en forma automática para poder graficar:
1) Promedio (o Desviacion Estandar) por día , para la fecha ejemplo sería
:
de Nov 25, Nov 24, Nov 23 Oct/25,Oct /24 (ültimos 30 días),
y para cada día existen muchos registros (se digitan cada 2 horas)
2) Total por cada mes , en este caso del año 2004
Ene, Feb, Mar ... Nov. (tener en cuenta que la fecha se digita con
formato aa/mm/dd
3) Tttal del año en curso.

Recuerda que el archivo es un histórico que puede tener hasta 2 años en
línea.

Cómo se podrá hacer esto desde VBA, cómo VBA puede almacenar el total de
los 30 días calendarios y de los meses del años en curso (en un vector o
arreglo).

Espero haberme hecho entender ... necesito una luz a este problema con
carácter urgente.


Muchas gracias


KL wrote:

Me parece q todo esto se puede conseguir mediante unas formulas
relativamente simples. Solo una aclaracion: cuando hablas de calcular 30
dias anteriores y sacar el promedio por dia para dato1, dato2, etc... se
tiene q entender como por ejemplo:



1) para el Dato1 se suman todas las cantidades registradas entre la fecha
introducida y 30 dias atras y luego la suma se divide por 30 (o por el
numero de dias reales)? Y asi para el Dato2, Dato3, etc? De manera q si
hay
3 datos el resultado seria 3 numeros.



o bien



2) para el Dato1 se suman todas las cantidadeds registradas en el dia X y
se
saca el promedio? Y asi para cada dia dentro del periodo entre la fecha
introducida y 30 dias atras y luego para el Dato2, Dato3, etc? De manera
q
si hay 3 datos el resultado podria ser 90 numeros.



Dime algo,
KL




""Hernán Gutiérrez"" wrote in message
news:O4g$
> Buenos días.
>
> Requiero un código en VBA que pemita hacer lo siguiente. Actualmente lo
> hacemos con tablas dinámicas pero no hace todo lo que queremos.
>
> Tengo un archivo excel con más de 3000 registros, tiene información de
> varios años.
> Cada registro (fila) tiene lo siguientes campos:
> Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.
>
> Necesito que con base en una fecha que yo digite en una celda
> especifica,
> calcule lo siguiente:
> 1) Calcule los 30 días anteriores y me saque un promedio por día del
> dato1,dato2,dato3.Para un mismo día puedo tener varios registros
>
> 2) Saque el promedio de cada mes del año presente (con base a la fecha
> digitada).
>
> 3) Saque el total del año.
>
> Muchas gracias por su colaboración
>
> Hernán Gutiérrez
>
>
>




Respuesta Responder a este mensaje
#4 nanchoguti
26/11/2004 - 19:32 | Informe spam
Buenas tardes KL.

Muchas gracias por responder.


Al parecer tu macro muestra un valor. Para el caso de los últimos 30 días
móviles debe de mostrar 90 valores, o sea 30 días por 3 datos de cada día.
Para el caso de los meses del año, debe mostrar los valores de los meses
que van hasta esa fecha que digito el usuario. Si digito 2004/11/26 debe
calcular valores de enero hasta noviembre.

El archivo original está así.
2003/01/02 dato1 dato2 dato3 mas otros campos informativos
2004/01/01 dato1 dato2 dato3
2004/01/01 dato1 dato2 dato3 existen varios registros para un mismo
día
.
2004/04/05 dato1 dato2 dato3
.
hoy existen 3764 registros

Los resultados para la fecha digitada x usuario : 2004/12/15 (incluso en
un momento dado se quiero ver la gráfica del comportamiento de otro
periodo, por ejemplo podría digitar 2004/07/01 para analizar todo el mes
de junio del 2004)

1) Ultimos 30 días a la fecha digitada : La macro me debe de calcular las
fechas con sus promedios para cada día
2004/11/15 prom-dato1 prom-dato2 prom-dato3
2004/11/16 prom-dato1 prom-dato2 prom-dato3
2004/11/17 prom-dato1 prom-dato2 prom-dato3
y asi sucesivamente hasta
2004/12/14 prom-dato1 prom-dato2 prom-dato3
2004/12/15 prom-dato1 prom-dato2 prom-dato3

2) Los meses del año con los mismos promedios
Enero prom-dato1 prom-dato2 prom-dato3
Febrero prom-dato1 prom-dato2 prom-dato3
y asi sucesivamente hasta
Diciembre prom-dato1 prom-dato2 prom-dato3

Se garantiza que el archivo original esta clasificado por fecha.

Con los datos anteriores se generaría un gráfico automático en cualquier
momento que lo requiera un ingeniero de planta , para cualquier fecha
digitada y la macro debe estar disponible para que se pueda ejecutar desde
cualquier equipo de la red. Actualmente este libro es compartido por 3
equipos ubicados en diferentes lugares de la planta de producción.

Muy extenso mi cuento ... pero la pregunta para KL ... Si se podrá hacer
esto con una macro. Repito que con fórmulas matriciales {} esto se me
salio de las manos, porque aparte de los datos el registro lleva otra
informacion que no es importante para este cálculo pero que si ocupa
espacio en cada fila.

Un saludo y te reitero mis agradecimientos.

Hernán





L wrote:

Hernan,

He probado realizar la primera de tus tareas por medio de la siguiente
formula (30 fechas x 30 datos = 900 celdas):




=SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000))/SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000<>""))

y el macro q he escrito (mas abajo) y me resultan las formulas bastante mas
rapidas q el macro. La unica ventaja del macro es q no se recalcula cada dos
por tres.

Saludos,
KL

Const NumeroDatos = 30
Const NumeroDias = 30

Sub Promedios30Dias()
Dim Dato As Integer
Dim Registros As Range
Dim Registro As Range
Dim Dia As Single
Dim Contador As Single
Dim MiFecha As Range
Dim MiNumero()

Set MiFecha = Range("AG2")
Set Datos = Range("B1:AE1")
Set Registros = Range("A1:A4000")

Application.ScreenUpdating = False
For Dato = 1 To NumeroDatos
Dia = MiFecha.Value - NumeroDias
Contador = 1
While Dia < MiFecha.Value
ReDim MiNumero(0)
For Each Registro In Registros
If Registro.Value = Dia Then
'Idea de Leo Heuser
MiNumero(UBound(MiNumero)) _
= Registro.Offset(0, Dato).Value
ReDim Preserve MiNumero _
(UBound(MiNumero) + 1)
End If
Next Registro
MiFecha.Offset(Contador, 0).Value = Dia
If WorksheetFunction.Sum(MiNumero) = 0 Then
MiFecha.Offset(Contador, Dato).Value = 0
Else
MiFecha.Offset(Contador, Dato).Value = _
WorksheetFunction.Average(MiNumero)
End If
Dia = Dia + 1
Contador = Contador + 1
Wend
Next Dato
Application.ScreenUpdating = True
End Sub
-Fin Codigo


""Hernán Gutiérrez"" wrote in message
news:
>
> KL : Muchas gracias por responder
> Faltó explicar que actualmente/ lo hago con fórmulas matriciales y los
> datos se obtienen, pero a medida que ha crecido el archivo la lentidud es
> abismal a pesar de tener equipos bien configurados. Los usuarios ya no
> soportan esto.
>
> El asunto es que si el usuario digito 2004/11/25 obtenga los siguientes
> datos en forma automática para poder graficar:
> 1) Promedio (o Desviacion Estandar) por día , para la fecha ejemplo sería
> :
> de Nov 25, Nov 24, Nov 23 Oct/25,Oct /24 (ültimos 30 días),
> y para cada día existen muchos registros (se digitan cada 2 horas)
> 2) Total por cada mes , en este caso del año 2004
> Ene, Feb, Mar ... Nov. (tener en cuenta que la fecha se digita con
> formato aa/mm/dd
> 3) Tttal del año en curso.
>
> Recuerda que el archivo es un histórico que puede tener hasta 2 años en
> línea.
>
> Cómo se podrá hacer esto desde VBA, cómo VBA puede almacenar el total de
> los 30 días calendarios y de los meses del años en curso (en un vector o
> arreglo).
>
> Espero haberme hecho entender ... necesito una luz a este problema con
> carácter urgente.
>
>
> Muchas gracias
>
>
> KL wrote:
>
>> Me parece q todo esto se puede conseguir mediante unas formulas
>> relativamente simples. Solo una aclaracion: cuando hablas de calcular 30
>> dias anteriores y sacar el promedio por dia para dato1, dato2, etc... se
>> tiene q entender como por ejemplo:
>
>> 1) para el Dato1 se suman todas las cantidades registradas entre la fecha
>> introducida y 30 dias atras y luego la suma se divide por 30 (o por el
>> numero de dias reales)? Y asi para el Dato2, Dato3, etc? De manera q si
>> hay
>> 3 datos el resultado seria 3 numeros.
>
>> o bien
>
>> 2) para el Dato1 se suman todas las cantidadeds registradas en el dia X y
>> se
>> saca el promedio? Y asi para cada dia dentro del periodo entre la fecha
>> introducida y 30 dias atras y luego para el Dato2, Dato3, etc? De manera
>> q
>> si hay 3 datos el resultado podria ser 90 numeros.
>
>> Dime algo,
>> KL
>
>
>> ""Hernán Gutiérrez"" wrote in message
>> news:O4g$
>> > Buenos días.
>> >
>> > Requiero un código en VBA que pemita hacer lo siguiente. Actualmente lo
>> > hacemos con tablas dinámicas pero no hace todo lo que queremos.
>> >
>> > Tengo un archivo excel con más de 3000 registros, tiene información de
>> > varios años.
>> > Cada registro (fila) tiene lo siguientes campos:
>> > Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.
>> >
>> > Necesito que con base en una fecha que yo digite en una celda
>> > especifica,
>> > calcule lo siguiente:
>> > 1) Calcule los 30 días anteriores y me saque un promedio por día del
>> > dato1,dato2,dato3.Para un mismo día puedo tener varios registros
>> >
>> > 2) Saque el promedio de cada mes del año presente (con base a la fecha
>> > digitada).
>> >
>> > 3) Saque el total del año.
>> >
>> > Muchas gracias por su colaboración
>> >
>> > Hernán Gutiérrez
>> >
>> >
>> >
>
>
Respuesta Responder a este mensaje
#5 KL
26/11/2004 - 20:44 | Informe spam
Hernan,

Algo no esta funcionando bien. Mi macro me funciona bien y devuelve 900
valores (30 dias por 30 datos) y no uno tal como tu describes
abajo.Asegurate que la fecha de validacion se introduce en la celda AG2 de
la misma hoja q la base de datos o bien cambia la variable MiFecha en el
codigo. Tambien comprueba las siguientes constantes y variables:

Const NumeroDatos = 30
Const NumeroDias = 30

Set MiFecha = Range("AG2")
Set Datos = Range("B1:AE1")
Set Registros = Range("A1:A4000")

Y por supuesto, si quieres te mando mi hoja para q puedas comprobar como
funciona o me mandas la tuya y te lo hago yo. Dime algo.

Saludos,
KL


""Hernán Gutiérrez" M." wrote in message
news:exjh$Y%

Buenas tardes KL.

Muchas gracias por responder.


Al parecer tu macro muestra un valor. Para el caso de los últimos 30 días
móviles debe de mostrar 90 valores, o sea 30 días por 3 datos de cada día.
Para el caso de los meses del año, debe mostrar los valores de los meses
que van hasta esa fecha que digito el usuario. Si digito 2004/11/26 debe
calcular valores de enero hasta noviembre.

El archivo original está así.
2003/01/02 dato1 dato2 dato3 mas otros campos informativos
2004/01/01 dato1 dato2 dato3
2004/01/01 dato1 dato2 dato3 existen varios registros para un mismo
día
.
2004/04/05 dato1 dato2 dato3
.
hoy existen 3764 registros

Los resultados para la fecha digitada x usuario : 2004/12/15 (incluso en
un momento dado se quiero ver la gráfica del comportamiento de otro
periodo, por ejemplo podría digitar 2004/07/01 para analizar todo el mes
de junio del 2004)

1) Ultimos 30 días a la fecha digitada : La macro me debe de calcular las
fechas con sus promedios para cada día
2004/11/15 prom-dato1 prom-dato2 prom-dato3
2004/11/16 prom-dato1 prom-dato2 prom-dato3
2004/11/17 prom-dato1 prom-dato2 prom-dato3
y asi sucesivamente hasta
2004/12/14 prom-dato1 prom-dato2 prom-dato3
2004/12/15 prom-dato1 prom-dato2 prom-dato3

2) Los meses del año con los mismos promedios
Enero prom-dato1 prom-dato2 prom-dato3
Febrero prom-dato1 prom-dato2 prom-dato3
y asi sucesivamente hasta
Diciembre prom-dato1 prom-dato2 prom-dato3

Se garantiza que el archivo original esta clasificado por fecha.

Con los datos anteriores se generaría un gráfico automático en cualquier
momento que lo requiera un ingeniero de planta , para cualquier fecha
digitada y la macro debe estar disponible para que se pueda ejecutar desde
cualquier equipo de la red. Actualmente este libro es compartido por 3
equipos ubicados en diferentes lugares de la planta de producción.

Muy extenso mi cuento ... pero la pregunta para KL ... Si se podrá hacer
esto con una macro. Repito que con fórmulas matriciales {} esto se me
salio de las manos, porque aparte de los datos el registro lleva otra
informacion que no es importante para este cálculo pero que si ocupa
espacio en cada fila.

Un saludo y te reitero mis agradecimientos.

Hernán





L wrote:

Hernan,



He probado realizar la primera de tus tareas por medio de la siguiente
formula (30 fechas x 30 datos = 900 celdas):






=SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000))/SUMPRODUCT(($A$2:$A$4000=$BM3)*(B$2:B$4000<>""))

y el macro q he escrito (mas abajo) y me resultan las formulas bastante
mas
rapidas q el macro. La unica ventaja del macro es q no se recalcula cada
dos
por tres.



Saludos,
KL



Const NumeroDatos = 30
Const NumeroDias = 30



Sub Promedios30Dias()
Dim Dato As Integer
Dim Registros As Range
Dim Registro As Range
Dim Dia As Single
Dim Contador As Single
Dim MiFecha As Range
Dim MiNumero()



Set MiFecha = Range("AG2")
Set Datos = Range("B1:AE1")
Set Registros = Range("A1:A4000")



Application.ScreenUpdating = False
For Dato = 1 To NumeroDatos
Dia = MiFecha.Value - NumeroDias
Contador = 1
While Dia < MiFecha.Value
ReDim MiNumero(0)
For Each Registro In Registros
If Registro.Value = Dia Then
'Idea de Leo Heuser
MiNumero(UBound(MiNumero)) _
= Registro.Offset(0, Dato).Value
ReDim Preserve MiNumero _
(UBound(MiNumero) + 1)
End If
Next Registro
MiFecha.Offset(Contador, 0).Value = Dia
If WorksheetFunction.Sum(MiNumero) = 0 Then
MiFecha.Offset(Contador, Dato).Value = 0
Else
MiFecha.Offset(Contador, Dato).Value = _
WorksheetFunction.Average(MiNumero)
End If
Dia = Dia + 1
Contador = Contador + 1
Wend
Next Dato
Application.ScreenUpdating = True
End Sub
-Fin Codigo




""Hernán Gutiérrez"" wrote in message
news:
>
> KL : Muchas gracias por responder
> Faltó explicar que actualmente/ lo hago con fórmulas matriciales y los
> datos se obtienen, pero a medida que ha crecido el archivo la lentidud
> es
> abismal a pesar de tener equipos bien configurados. Los usuarios ya no
> soportan esto.
>
> El asunto es que si el usuario digito 2004/11/25 obtenga los siguientes
> datos en forma automática para poder graficar:
> 1) Promedio (o Desviacion Estandar) por día , para la fecha ejemplo
> sería
> :
> de Nov 25, Nov 24, Nov 23 Oct/25,Oct /24 (ültimos 30 días),
> y para cada día existen muchos registros (se digitan cada 2 horas)
> 2) Total por cada mes , en este caso del año 2004
> Ene, Feb, Mar ... Nov. (tener en cuenta que la fecha se digita con
> formato aa/mm/dd
> 3) Tttal del año en curso.
>
> Recuerda que el archivo es un histórico que puede tener hasta 2 años en
> línea.
>
> Cómo se podrá hacer esto desde VBA, cómo VBA puede almacenar el total
> de
> los 30 días calendarios y de los meses del años en curso (en un vector
> o
> arreglo).
>
> Espero haberme hecho entender ... necesito una luz a este problema con
> carácter urgente.
>
>
> Muchas gracias
>
>
> KL wrote:
>
>> Me parece q todo esto se puede conseguir mediante unas formulas
>> relativamente simples. Solo una aclaracion: cuando hablas de calcular
>> 30
>> dias anteriores y sacar el promedio por dia para dato1, dato2, etc...
>> se
>> tiene q entender como por ejemplo:
>
>> 1) para el Dato1 se suman todas las cantidades registradas entre la
>> fecha
>> introducida y 30 dias atras y luego la suma se divide por 30 (o por el
>> numero de dias reales)? Y asi para el Dato2, Dato3, etc? De manera q
>> si
>> hay
>> 3 datos el resultado seria 3 numeros.
>
>> o bien
>
>> 2) para el Dato1 se suman todas las cantidadeds registradas en el dia
>> X y
>> se
>> saca el promedio? Y asi para cada dia dentro del periodo entre la
>> fecha
>> introducida y 30 dias atras y luego para el Dato2, Dato3, etc? De
>> manera
>> q
>> si hay 3 datos el resultado podria ser 90 numeros.
>
>> Dime algo,
>> KL
>
>
>> ""Hernán Gutiérrez"" wrote in message
>> news:O4g$
>> > Buenos días.
>> >
>> > Requiero un código en VBA que pemita hacer lo siguiente. Actualmente
>> > lo
>> > hacemos con tablas dinámicas pero no hace todo lo que queremos.
>> >
>> > Tengo un archivo excel con más de 3000 registros, tiene información
>> > de
>> > varios años.
>> > Cada registro (fila) tiene lo siguientes campos:
>> > Fecha(aa-mm-dd),dato1,dato2,dato3,dato4,dato5 . dato30.
>> >
>> > Necesito que con base en una fecha que yo digite en una celda
>> > especifica,
>> > calcule lo siguiente:
>> > 1) Calcule los 30 días anteriores y me saque un promedio por día del
>> > dato1,dato2,dato3.Para un mismo día puedo tener varios registros
>> >
>> > 2) Saque el promedio de cada mes del año presente (con base a la
>> > fecha
>> > digitada).
>> >
>> > 3) Saque el total del año.
>> >
>> > Muchas gracias por su colaboración
>> >
>> > Hernán Gutiérrez
>> >
>> >
>> >
>
>




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida