Procedimiento con rangos complicado

20/04/2005 - 11:59 por Rantamplan | Informe spam
Bueas grupo,
a ver si consigo explicarme de manera que me podais entender:

Tengo un rango (a1:a61) que contiene 60 valores que se van actualizando
cada minuto.

En la celda a62 calculo la media de los 60 valores anteriores.

Tengo 3 columnas etiquetadas 'Hora1 (b1:b61)','Hora2(c1:cs1)','hora3
(d1:ds1)' que deben ir recogiendo las diferentes medias almacenadas en la
celda a62 de la siguietne manera:

-Primer minuto de ejecución: Se calcula la primera media y ésta es copiada
dentro de 'Hora1' en su primera celda (b1).
-Segundo minuto de jecución. Se calcula la media y ésa es copiada dentro de
'Hora1' en su segunda celda (b2).
-Cuando se rellenen las 60 celdas de 'Hora1' pasará a rellenar 'Hora2' y
así sucesivamente

Alguna idea de como solucionar esto???

He estado mirando el trabajar con rangos a través de VBA pero no tengo muy
claro como plantearmelo.

Gracias de antemano ;-)
Salu2!.

Preguntas similare

Leer las respuestas

#1 Rantamplan
20/04/2005 - 12:03 | Informe spam
Rantamplan Escribió el día mié 20 abr 2005
11:59:33a:

Bueas grupo,
a ver si consigo explicarme de manera que me podais entender:

Tengo un rango (a1:a61) que contiene 60 valores que se van
actualizando cada minuto.

En la celda a62 calculo la media de los 60 valores anteriores.

Tengo 3 columnas etiquetadas 'Hora1 (b1:b61)','Hora2(c1:cs1)','hora3
(d1:ds1)' que deben ir recogiendo las diferentes medias almacenadas en
la celda a62 de la siguietne manera:

-Primer minuto de ejecución: Se calcula la primera media y ésta es
copiada dentro de 'Hora1' en su primera celda (b1).
-Segundo minuto de jecución. Se calcula la media y ésa es copiada
dentro de 'Hora1' en su segunda celda (b2).
-Cuando se rellenen las 60 celdas de 'Hora1' pasará a rellenar 'Hora2'
y así sucesivamente

Alguna idea de como solucionar esto???

He estado mirando el trabajar con rangos a través de VBA pero no tengo
muy claro como plantearmelo.

Gracias de antemano ;-)
Salu2!.





Hay un error en los rangos del mensaje anterior:

Hora1 (b1:b61)
Hora2 (c1:c61)
Hora3 (d1:d61)

Ahora si esta correcto ;-)
Respuesta Responder a este mensaje
#2 Rantamplan
20/04/2005 - 12:24 | Informe spam
Rantamplan Escribió el día mié 20 abr 2005
12:03:49p:

Rantamplan Escribió el día mié 20 abr 2005
11:59:33a:

Bueas grupo,
a ver si consigo explicarme de manera que me podais entender:

Tengo un rango (a1:a61) que contiene 60 valores que se van
actualizando cada minuto.

En la celda a62 calculo la media de los 60 valores anteriores.

Tengo 3 columnas etiquetadas 'Hora1 (b1:b61)','Hora2(c1:cs1)','hora3
(d1:ds1)' que deben ir recogiendo las diferentes medias almacenadas en
la celda a62 de la siguietne manera:

-Primer minuto de ejecución: Se calcula la primera media y ésta es
copiada dentro de 'Hora1' en su primera celda (b1).
-Segundo minuto de jecución. Se calcula la media y ésa es copiada
dentro de 'Hora1' en su segunda celda (b2).
-Cuando se rellenen las 60 celdas de 'Hora1' pasará a rellenar 'Hora2'
y así sucesivamente

Alguna idea de como solucionar esto???

He estado mirando el trabajar con rangos a través de VBA pero no tengo
muy claro como plantearmelo.

Gracias de antemano ;-)
Salu2!.





Hay un error en los rangos del mensaje anterior:

Hora1 (b1:b61)
Hora2 (c1:c61)
Hora3 (d1:d61)

Ahora si esta correcto ;-)




Fale, voy haciendo progresos.
He creado un pequeño procedimiento que copia la media ubicada en la celda
a62 a un rango que he creado y que está formado por Hora1,Hora2,Hora3:

Dim as integer,j as integer
Dim rango as range
Dima valor as variant
valor = hoja2.range("a62").value
set rango = hoja2.range("b1:b61")
for i=1 to 60
for j=1 to 3
rango.cells(i,j) = valor
next j
next i

Pero claro, ese codigo me copia en todo el rango el mismo valor, y lo que
yo quiero es que se copie en cada celda del rango el valor que le
corresponda :-(
Tal vez tenga que utilizar un Timer para que controle el tiempo y copie
cada minuto donde debe...

A ver si algun iluminado me ayuda please!!
Respuesta Responder a este mensaje
#3 Fernando Arroyo
20/04/2005 - 12:55 | Informe spam
En principio no parece necesario usar un temporizador. Si he entendido bien, las celdas se actualizan automáticamente cada minuto. Al producirse dicha actualización, se debería producir también la de la celda que tiene la media (A62), luego entonces lo único que habría que hacer sería usar el evento Worksheet_change "vigilando" la celda que tiene la media y pasando su valor a la primera celda vacía en la columna B, a la C si la B ya está llena, o a la D si la C ya está llena.

Lo que no veo tan claro es el número de celdas implicadas. El rango A1:A61 tiene 61 celdas, pero sin embargo tu estás hablando de 60 valores. ¿Quizás es que la primera fila es de títulos?.

Si nos das esta información (y si lo de la actualización automática es así), no creo que sea difícil escribir el código del evento.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Rantamplan" escribió en el mensaje news:
Rantamplan Escribió el día mié 20 abr 2005
12:03:49p:
Fale, voy haciendo progresos.
He creado un pequeño procedimiento que copia la media ubicada en la celda
a62 a un rango que he creado y que está formado por Hora1,Hora2,Hora3:

Dim as integer,j as integer
Dim rango as range
Dima valor as variant
valor = hoja2.range("a62").value
set rango = hoja2.range("b1:b61")
for i=1 to 60
for j=1 to 3
rango.cells(i,j) = valor
next j
next i

Pero claro, ese codigo me copia en todo el rango el mismo valor, y lo que
yo quiero es que se copie en cada celda del rango el valor que le
corresponda :-(
Tal vez tenga que utilizar un Timer para que controle el tiempo y copie
cada minuto donde debe...

A ver si algun iluminado me ayuda please!!
Respuesta Responder a este mensaje
#4 Rantamplan
20/04/2005 - 13:14 | Informe spam
"Fernando Arroyo" Escribió el día mié 20
abr 2005 12:55:01p:

En principio no parece necesario usar un temporizador. Si he entendido
bien, las celdas se actualizan automáticamente cada minuto. Al
producirse dicha actualización, se debería producir también la de la
celda que tiene la media (A62),



Correcto, la actualización se realiza de forma automática mediante una
Query con otra aplicación.

luego entonces lo único que habría que
hacer sería usar el evento Worksheet_change "vigilando" la celda que
tiene la media y pasando su valor a la primera celda vacía en la
columna B, a la C si la B ya está llena, o a la D si la C ya está
llena.



Una puntualización:
Primero ha de rellenarse completamente la columna A (sus 60 celdas) antes
de pasar a la columna B.

Resumiendo por si no me he explicado bien:
El valor que calcula la media se actualiza cada minuto, pero como se
actualiza sobre la misma celda, se pierde el valor anterior, por eso, antes
de actualizarse el valor, se copia a otra columna (columna B) y se guardan
en dicha columna 60 valores (osea 1 hora). Cuando se han copiado esos 60
valores (ha transcurrido una hora) pasa a la columna C y se rellenan otros
60 valores y asú sucesivamente.


Lo que no veo tan claro es el número de celdas implicadas. El rango
A1:A61 tiene 61 celdas, pero sin embargo tu estás hablando de 60
valores. ¿Quizás es que la primera fila es de títulos?.



Sip, eso no es problema, en realidad son 60 valores, asi que el rango
correcto seria A1:60

Si nos das esta información (y si lo de la actualización automática es
así), no creo que sea difícil escribir el código del evento. Un
saludo.



A ver si entre todos podemos sacarle punta a esto
Muchas Gracias!!

Fernando Arroyo
MS MVP - Excel


"Rantamplan" escribió en el mensaje
news:
Rantamplan Escribió el día mié 20 abr 2005



12:03:49p:
Fale, voy haciendo progresos.
He creado un pequeño procedimiento que copia la media ubicada en la


celda
a62 a un rango que he creado y que está formado por


Hora1,Hora2,Hora3:

Dim as integer,j as integer
Dim rango as range
Dima valor as variant
valor = hoja2.range("a62").value
set rango = hoja2.range("b1:b61")
for i=1 to 60
for j=1 to 3
rango.cells(i,j) = valor
next j
next i

Pero claro, ese codigo me copia en todo el rango el mismo valor, y lo


que
yo quiero es que se copie en cada celda del rango el valor que le
corresponda :-(
Tal vez tenga que utilizar un Timer para que controle el tiempo y


copie
cada minuto donde debe...

A ver si algun iluminado me ayuda please!!



Respuesta Responder a este mensaje
#5 Rantamplan
20/04/2005 - 13:19 | Informe spam
Una puntualización:
Primero ha de rellenarse completamente la columna B (sus 60 celdas)
antes de pasar a la columna C.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida