Macro copia todo el rango, cuando debería copiar solo celdas con valores.

Buena noche,

Tengo un archivo de Excel en el que hice una macro que me copia ciertos valores y luego los almacena en la columna a en la ultima fila en blanco, para hacer un registro.

Mi problema es que el código que tengo no me funciona bien

Este es el código

 ActiveSheet.Range("ab1", ActiveSheet.Range("ab1").End(xlDown)).Select
Selection.Offset(0, 0).Resize(Selection.Rows.Count + 1, _
   Selection.Columns.Count + 12).Select
    Selection.Copy
   

Lo que logre deducir en que en la posición ab1 donde copia los datos me copia desde ab1 hasta ab20 aunque únicamente tengan datos 5 celdas,

Tengo esta fórmula "=SI(AL3>0, AB2," ")" en las celdas ab1 hasta ab20 para evitar que me queden ceros, y creo que la macro me toma esas fórmulas como valores y no se como evitarlo.

Gracias por sus ayuda y comentarios

2 Respuestas

Respuesta
1

La fórmula "=SI(AL3>0, AB2," ") implica que en al3 hay un dato o es la intentar donde se copia el valor, porque si en al3 no hay valores siempre va a salir en blanco

Respuesta
1

Exactamente cuál es la región o rango que quieres copiar, porque lo que hace la macro es seleccionar la celda AB1, luego selecciona hacia abajo hasta la última fila con datos, selecciona una fila más y por último selecciona 12 columnas más a la derecha, en total selecciona 13 columnas.

Si solamente quieres que se seleccionen las celdas que tiene valores, se deberá copiar columna por columna cada una de las 13 columnas.

Pero antes de hacer correcciones a la macro dime qué es lo que quieres copiar y en dónde lo vas a pegar.

Por ejemplo, si en la columna AB quieres copiar solamente lo que tiene valor, cuando lo pegues los datos pegados se compactarán, es decir que si de la AB1 a la AB20 tienes 5 celdas con valor, al momento que los pegues, por ejemplo, en la celda "A1", los datos quedarán en la A1, A2, A3, A4 y A5.

Es justo lo que me dices seleccionar la celda AB1, luego selecciona hacia abajo hasta la última fila con datos, el problema es que en las celdas ab1 hasta la ab20  Tengo esta fórmula "=SI(AL3>0, AB2," ")"  La macro al correrla  me selecciona todo ese rango ( ab1 hasta ab20 ) y doce celdas a la derecha.  Aunque en la columna ab1 solo hayan. Datos hasta la ab7 por ejemplo. 

luego selecciona hacia abajo hasta la última fila con datos, el problema es que en las celdas ab1 hasta la ab20 Tengo esta fórmula "=SI(AL3>0, AB2," ")" La macro al correrla me selecciona todo ese rango ( ab1 hasta ab20 ) y doce celdas a la derecha. Aunque en la columna ab1 solo hayan. Datos hasta la ab7 por ejemplo.

Pero puede ser que tengas datos esto:

      ab

1   dato1

2    

3   dato2

4   

5   dato3

Entonces solamente quieres copiar 3 datos, el resultado cómo lo quieres:

        a       b

1 dato1

2 dato2

3 dato3

Espero tus comentarios, o si puedes envíame ejemplos de lo que tienes y lo que esperas como resultado.

El día de hoy  te mande el correo  con la macro para que la puedas  revisar. Gracias

Te anexo la macro para copiar las filas que tienen dato en la columna AB

Sub sel()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("FV´CONSOLIDADO")
    i = 1
    Do While Trim(h1.Range("AB" & i)) <> ""
        h1.Range("AB" & i & ":AO" & i).Copy
        u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
        h1.Range("A" & u).PasteSpecial Paste:=xlPasteValues
        i = i + 1
    Loop
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas