Copiar la ultima fila con datos, y el rango de la penultima fila

10/08/2009 - 19:20 por Sago | Informe spam
Buenos días espero que me puedan ayudar por favor, diariamente tengo que
abrir y actualizar un archivo, esto me tarda un poco de tiempo ya que son 14
archivos, lo que necesito es copiar la ultima fila que tenga datos y pegarla
debajo de esta con todas sus formulas, ademas copiar y pegar como valores el
rango "C hasta E" de la fila antes mencionada, que va creciendo, como le
dijo que es la ultima celda con datos, espero haberme explicado.
Ejemplo:

fila 5

[Columna A][Columna B]][Columna C][Columna D][Columna E][Columna F][Columna G]

FECHA IMPORTE PRECIO DIAS ACCIONES ACCI EN CIRC

10-08-09 157.00 1157 2 157,65 157 15656

Copiar primero toda la fila , para tener las formulas que tiene y hacer la
fila para el siguiente día.

Despues copiar y pegar como valores la columnas desde "C" hasta "E", pero
solamente el rango "C" hasta "E" ahora de la penutlima fila que tiene datos
y formulas, ya que este rengo va creciendo.
Tengo que copiar y pegarlo como valores para ir guardando en la fila el
historico diario, asi pegarla como valores

Por su ayuda muchas gracías.

Preguntas similare

Leer las respuestas

#1 Jose
10/08/2009 - 20:18 | Informe spam
Hola Sago:

No sé si habré entendido tu ejemplo.
Prueba el código que te dejo, aunque no se me dá bien, a ver si sirve
para tu caso.

Un saludo.
Jose


Sub Macro1()

Dim i As Long
i = Range("A50000").End(xlUp).Row
Range("A50000").End(xlUp).Select
Range(Selection, Selection.End(xlToRight)).Copy
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("C" & i & ":E" & i).Value = Range("C" & i & ":E" & i).Value

End Sub
Respuesta Responder a este mensaje
#2 Sago
10/08/2009 - 21:21 | Informe spam
Muchas gracias Jose, pero lo unico que me falto es que al final debo de
copiar toda la fila con sus formulas.

Saludos.
Y otra vez muchas gracias.

"Jose" wrote:


Hola Sago:

No sé si habré entendido tu ejemplo.
Prueba el código que te dejo, aunque no se me dá bien, a ver si sirve
para tu caso.

Un saludo.
Jose


Sub Macro1()

Dim i As Long
i = Range("A50000").End(xlUp).Row
Range("A50000").End(xlUp).Select
Range(Selection, Selection.End(xlToRight)).Copy
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("C" & i & ":E" & i).Value = Range("C" & i & ":E" & i).Value

End Sub

Respuesta Responder a este mensaje
#3 Jose
10/08/2009 - 22:12 | Informe spam
No hay de qué, Sago.

En el ejemplo que te dejé, primero todas las formulas que tuvieras en
la fila 5 se copian a la fila 6. Y después, se copia el valor sólo del
rango C5:E5.

la siguiente vez que ejecutes la macro, las formulas de la fila 6 se
copian a la fila 7; y se copia el valor sólo del rango C6:E6.

Así sucesivamente.
En la última fila siempre tienes todas las fórmulas. ¿No era así como
lo querías?

Un saludo
Jose.



P.D.:
Si quieres copiar las fórmulas en dos lineas, repite la siguiente
instrucción:
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial

que te quede así:

Sub macro1()

Dim i As Long
i = Range("A50000").End(xlUp).Row
Range("A50000").End(xlUp).Select
Range(Selection, Selection.End(xlToRight)).Copy
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("C" & i & ":E" & i).Value = Range("C" & i & ":E" & i).Value

End Sub
Respuesta Responder a este mensaje
#4 Sago
11/08/2009 - 17:47 | Informe spam
Muchas gracias otra ves por haberme respondido.

Te vuelvo a explicar necesito copiar toda la ultima fila que tenga datos y
pegarlos abajo, despues solo copiar y pegar como valores el penultima en el
rango "C" hasta "E",

lo que hace el codigo que me enviaste, solo copia hacia abajo el rango "C"
hasta "E" y yo necesito copiar toda la fila, y despues si esta correcto me
pega el rango "C" hasta "E" como valores en la penultima fila en el rango
establecido.



Otra ves muchas gracais.
Saludos

"Jose" wrote:


No hay de qué, Sago.

En el ejemplo que te dejé, primero todas las formulas que tuvieras en
la fila 5 se copian a la fila 6. Y después, se copia el valor sólo del
rango C5:E5.

la siguiente vez que ejecutes la macro, las formulas de la fila 6 se
copian a la fila 7; y se copia el valor sólo del rango C6:E6.

Así sucesivamente.
En la última fila siempre tienes todas las fórmulas. ¿No era así como
lo querías?

Un saludo
Jose.



P.D.:
Si quieres copiar las fórmulas en dos lineas, repite la siguiente
instrucción:
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial

que te quede así:

Sub macro1()

Dim i As Long
i = Range("A50000").End(xlUp).Row
Range("A50000").End(xlUp).Select
Range(Selection, Selection.End(xlToRight)).Copy
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Range("A50000").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("C" & i & ":E" & i).Value = Range("C" & i & ":E" & i).Value

End Sub

Respuesta Responder a este mensaje
#5 Jose
12/08/2009 - 10:45 | Informe spam
Hola Sago:

Esto te copia la última fila, toda ella (la unica diferencia es que
antes sólo copiaba hasta la columna G de la fila puesto que tu tabla
sólo llega hasta la columna G). Si la última fila es la 5, la copia y
la pega entera en la fila 6. Y después copia sólo el valor del rango
C:E penultimo que en este caso sería el 5; es decir: rango C5:E5.
Mira a ver si te sirve mejor éste ejemplo.

Tú dices: "copiar toda la ultima fila que tenga datos "
primeramente, la última fila en éste ejmplo que nos has dejdo es la
fila 5 ¿no?
Y dices: "y pegarlos abajo"
Abajo, ¿dónde?. Abajo es la siguiente fila que es la fila 6 ¿no?

Un saludo.
Jose.


Sub Macro1()
Dim i As Long
i = Range("A50000").End(xlUp).Row

Range(i & ":" & i).Copy
Range(i & ":" & i).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
Range("C" & i & ":E" & i).Value = Range("C" & i & ":E" & i).Value
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida