speed_methal
New Member
- Joined
- May 8, 2010
- Messages
- 14
Buenas a todos, soy nuevo en excel y necesito realizar una operación con macros. Estoy aprendiendo el lenguaje VBA pero aún desconozco gran parte del mismo.
He de eliminar ciertas filas de la siguiente configuración.
En la celda A3 empieza mi columna como sigue:
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.10
0.11
0.12
.
.
.
y necesito transformarla en esta:
0
0.04
0.08
0.12
.
.
.
es decir dejar una y eliminar tres
He generado una macro rudimentaria que lo hace pero son muchisimos datos y tarda un montón.
Sub EliminaFilasDesplazamientos()
'Elimina filas alternas (pares o impares) de modo que se eleminen los tiempos
'intermedios generados por la doble interpolación al pasar de aceleración a
'a desplazamiento
ultimacelda = 10007
'Número de la fila que contiene el último valor de la columna
Do Until n = 2
n = n + 1
For i = 4 To ultimacelda
Cells(i, "A").EntireRow.Delete
'4 se refiere al numero de la celda siguiente a la de t = 0.
Next i
Loop
End Sub
Mis dudas son si hay alguna manera de hacer esto de un sólo barrido para reducir el tiempo de ejecución. A modo de aprendizaje; la fila hasta la que se ha de hacer la operación la meto a pelo. Habría alguna manera de definir la variable ultimacelda para que sea el número de la última celda de la columna A que tiene información?? ya que en el primer bucle no se pierde tiempo, reduciéndose las filas a la mitad; pero en el segundo bucle la variable ultimacelda hace que se ejecute todas las filas anteriores suponiendo un extra de tiempo inecesario.
Espero me podais ayudar.
Saludos a todos
He de eliminar ciertas filas de la siguiente configuración.
En la celda A3 empieza mi columna como sigue:
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
0.10
0.11
0.12
.
.
.
y necesito transformarla en esta:
0
0.04
0.08
0.12
.
.
.
es decir dejar una y eliminar tres
He generado una macro rudimentaria que lo hace pero son muchisimos datos y tarda un montón.
Sub EliminaFilasDesplazamientos()
'Elimina filas alternas (pares o impares) de modo que se eleminen los tiempos
'intermedios generados por la doble interpolación al pasar de aceleración a
'a desplazamiento
ultimacelda = 10007
'Número de la fila que contiene el último valor de la columna
Do Until n = 2
n = n + 1
For i = 4 To ultimacelda
Cells(i, "A").EntireRow.Delete
'4 se refiere al numero de la celda siguiente a la de t = 0.
Next i
Loop
End Sub
Mis dudas son si hay alguna manera de hacer esto de un sólo barrido para reducir el tiempo de ejecución. A modo de aprendizaje; la fila hasta la que se ha de hacer la operación la meto a pelo. Habría alguna manera de definir la variable ultimacelda para que sea el número de la última celda de la columna A que tiene información?? ya que en el primer bucle no se pierde tiempo, reduciéndose las filas a la mitad; pero en el segundo bucle la variable ultimacelda hace que se ejecute todas las filas anteriores suponiendo un extra de tiempo inecesario.
Espero me podais ayudar.
Saludos a todos