Actualizar datos en columnas a partir de una consulta

Hola Tavo... Lo molesto para ver si me podrías ayudar con esto... Lo que pasa es que en este momento ando realizando en excel una tabla que se actualiza cada 10 min, y a partir de un cambio en el valor de una celda ejecuta una macro que hace una pequeña modificación a esa tabla... De esta ultima hago un calculo entre dos columnas y arrojo el resultado en otra columna con la fecha en la primera fila y los resultados en el resto de la columna... Hasta ahí todo bien... En lo que ando atascado es en que quiero seguir realizando la misma operación automáticamente... Me explico... Sin borrar el primer calculo en esa columna, pasar a otra columna con el cambio en el valor de la celda (o sea con la actualización) y hacer la misma operación: poner la fecha y la hora del calculo actual en la primera fila y después en el resto de la columna los valores acabados de calcular... Es decir... Ir llenando la hoja con esos registros calculados en el momento hasta cierto limite, digamos unas 300 columnas.. Disculpas si me extendí mucho... Pero la idea es entender bien el asunto... De antemano muchas gracias!

1 respuesta

Respuesta
1
Sin embargo, no estoy seguro de haber entendido. La idea es que la misma macro que tienes ahora, la cual está tomando información de celdas determinadas, ¿funcione para otro grupo de celdas?
Si esa es la idea, habría que escribir la macro para que realice un ciclo donde se vaya repiendo el proceso pero cada vez se utilice una celda nueva. Esto puedes lograrlo usando en lugar de nombres de celdas, la referencia a ellas. Algo como:
For i = 1 To 300
      Cells(1, i).Value = Cells(5, i + 2).Value
Next i

De esta forma, puedes ir variando el número de la columna cada vez que se recorre el ciclo mediante la variable i.
Déjame saber si tienes alguna duda o si esta no era la respuesta que esperabas.
Hola Tavopz!, desafortunadamente creo que no me entendiste muy bien lo que quiero hacer... sin embargo ese código que mandaste me puso a pensar en varias opciones que evalúe en el programa... y hasta ahora no me han funcionado... por eso tratare de explicártelo más a fondo para ver si queda claro lo que busco... tengo un tabla que se actualiza por medio de consulta web cada diez minutos, como la tabla viene en valores decimales con puntos en vez de comas, lo que hago es detectar un cambio en la celda G27 que es la que siempre cambia de valor y con ese cambio ejecto una macro que le cambia el formato a la tabla para poder hacer unos cálculos... esos cálculos consisten en lo siguiente:
De cada fila saco el máximo y el mínimo, y luego hago la diferencia entre ellos dos... y ese calculo... que va en otra columna lo llamo...*diferencia actual* (lo anterior sin necesidad de código en VBA) y al lado de esta va otra columna... que es la misma de la anterior pero que tiene como encabezado la hora y la fecha de la operación realizada... entonces digamos que pasan otros 10 min... tengo la celda G27 seleccionada... se supone que debe de haber un cambio en la tabla y por consiguiente en esa celda... entonces ahí viene lo que quiero hacer... se ejecuta nuevamente la macro del cambio de formato... se hacen otra vez los cálculos... la columna *diferencia actual* se actualiza también... pero... la siguiente columna no cambia... si no que al lado de esta va otra... con la nueva fecha y el nuevo calculo... o sea que en teoría debería ser la misma de la columna *diferencia actual* y así sucesivamente hasta que le quiera dar un limite... por que con esos datos pretendo hacer posteriormente una gráfica que me indique un comportamiento a través del tiempo...
Espero que esta vez haya sido más claro... si no seria bueno que existiera una forma de enviarte el código... de todas formas muchas gracias hermano por la colaboración... de verdad que hacen un gran trabajo al ayudar a otras personas... hasta luego!
Segundo intento, espero haber entendido esta vez.
Lo que entiendo entonces es que cada que se ejecute la macro, debes saber cuál es el lugar donde vas a colocar la fecha y hora, para que dentro de tu código indiques estas celdas no de manera fija, sino con base en una variable.
Si deseas saber cuál es la última celda (hacia la derecha), puedes ubicarte en la celda inicial y escribir:
x = Range("C1").End(xlToRight).Column
Cells(1, x).Value = Date
Cells(2, x).Value = Time

O si es hacia abajo, sería así:
x = Range("C1").End(xlDown).Row
Cells(x, 3).Value = Date
Cells(x, 4).Value = Time
Hola Tavopz!... todo un éxito!... modifique un poco con algo de mi lógica... y listo... perfecto! Muchas gracias!... y de verdad... que tesos y altruistas son uds de compartir su conocimiento... ahora trabajo en la evolución del programa a algo un poco más robusto... que a lo mejor necesite alguna ayuda... depornto lo estaré molestando... hasta luego!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas