como copiar datos de un rango a otra hoja.. pero cuyos valores de origen sean mayor a 0

11 envíos / 0 nuevos
Último envío
marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
como copiar datos de un rango a otra hoja.. pero cuyos valores de origen sean mayor a 0

Hola amigos del foro, tengo una macro que me copia datos de una hoja a otra... pero me copia los valores 0 tambien... necesito que me copie los datos, solo si la celda principal de origen es mayor a 0... les muestro mi macro....

 Range("AF121:AR122").Select

    Selection.Copy

    Application.Goto Reference:="VICTIMA"

    Selection.End(xlUp).Select

    ActiveCell.Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=False

    Application.Goto Reference:="Inicia3"

lo que necesito entonces es que solo si la celda AF121 es mayor a 0 copie los datos del rango... caso contrario no copie....

Son muchos mas rangos a copiar, esta es sola una grupo de comandos...

Agradezco de antemano su gentil ayuda.

 

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 3 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Si utilizas COPY y PASTE, las

Si utilizas COPY y PASTE, las celdas vacías te las copiará como 0, tal y como hace siempre Excel.

Si quieres discriminar, tendrás que supervisar los datos de cada celda mediante una macro, de manera que si es 0 no la copie.

Una alternativa es permitir que la copie, pero utilizando un formato condicional hacer que si el valor es 0, el color del texto sea blanco (igual que el fondo, para que no se vea)

Un saludo

marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
Gracias por la respuesta Cron

Gracias por la respuesta Cron, pero aun asi me copiaria las celdas vacias y las con valor 0.... necesito que me ignore el copiado de la linea completa si el valor de af121 es 0.....

 

Cron
Imagen de Cron
Offline
última acción: Hace 3 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Pues entonces ve recorriendo

Pues entonces ve recorriendo las celdas origen, introduces su valor en memoria (por ejemplo una matriz) y luego te vas a la otra pestaña y copias o no en función del valor.

marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
Gracias por tus respuestas

Gracias por tus respuestas amigo Cron, son demasiadas celdas, informacion que se introduce en una hoja, luego las copia a la base... en la misma macro no habria la forma de condicionar la copia fila por fila omitiendo la misma si el primer valor de la fila es 0?... lo que pasa es que al copiar a la base, me deja muchas filas en blanco con valores 0. 

Cron
Imagen de Cron
Offline
última acción: Hace 3 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
También puedes hacer eso. Si

También puedes hacer eso. Si sabes de entrada qué celdas son las que pueden sacarse del rango, puedes hacer la comprobación del valor primero, y según sea copia un rango o el otro.

marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
Nuevamente gracias Cron, pero

Nuevamente gracias Cron, pero soy novato en excel y en macros.... por eso solicito ayuda en este tema... si tubieras las variantes, podrias por favor escribirlas?.. asi entenderia mejor... 

gracias amigo por tu paciencia.

 

Cron
Imagen de Cron
Offline
última acción: Hace 3 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Revisando tu código he

Revisando tu código he aprendido una cosa... 

Prueba a modificar la línea:

 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
        True, Transpose:=False

Poniendo true donde he marcado en negrita y ejecuta el código.

Pensaba que Excel no hacía esto. Mis disculpas.

marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
Mil gracias amigo Cron, lo

Mil gracias amigo Cron, lo probare enseguida y te aviso como me fue....

Un abrazo.

marcelomauricio
Imagen de marcelomauricio
Offline
última acción: Hace 3 años 8 meses
alta: 19/10/2013 - 05:42
Puntos: 115
Amigo Cron, acabo de probar

Amigo Cron, acabo de probar la modificacion que me pasaste... aun asi me copia las filas con valores iniciales 0.

Habria otra solucion?

 

Cron
Imagen de Cron
Offline
última acción: Hace 3 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12715
Ah, claro. Lo que hace es no

Ah, claro. Lo que hace es no copiar las que no tienen valor, pero si en el original tienen 0, lo copia.

Prueba entonces lo siguiente (escribo sobre tu código)

 

 If range("AF121").value <> 0 then
 Range("AF121:AR122").Select
    Selection.Copy
    Application.Goto Reference:="VICTIMA"
    Selection.End(xlUp).Select
    ActiveCell.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.Goto Reference:="Inicia3"
 endif