Macro para copiar celdas no vacías de columna a la siguiente

Ante todo mis disculpas si mi consulta ha sido formulada anteriormente, pero es una incógnita que no se como resolver.
Es la siguiente: Necesito que mediante un código pueda copiar y pegar de una columna con celdas vacías y no vacías, aquellas columnas que contienen datos en la siguiente columna a la derecha, es decir si mis columnas son A Y B, la cual A es mi origen de datos en donde tengo celdas con datos y otras no, pueda copiar las que tienen contenido a la columna B pero en la misma celda. Ej de A9 a B9.
El problema es que las celdas vacías están entre aquellas que no lo están.. Por lo tanto cada vez que excel encuentre una celda con contenido debe copiar y pegar o incluso mover el contenido a la misma celda de la columna a la derecha.
Espero que sea entendible mi consulta y haya una solución para esta.

1 Respuesta

Respuesta
2

Ejecuta la siguiente macro

Sub Copiar_Columna_A()
'Por.Dante Amor
    Application.ScreenUpdating = False
    u = Range("A" & Rows.Count).End(xlUp).Row
    Range("A2:A" & u).Copy
    Range("B2").PasteSpecial xlValues
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Columna copiada"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Copiar_Columna_A
  10. Aceptar.

11. Para ejecutarla dale click a la imagen


Si quieres que sea en automático cada que capturas o modificas una celda en A, entonces pon la siguiente macro en los eventos de tu hoja.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        If Target.Count > 1000 Then Exit Sub
        For Each c In Target
            c.Offset(0, 1).Value = c.Value
        Next
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola Dante!,

La macro funciona, pero en realidad lo que seria mejor para mi caso, es que en vez de copiar la columna A en la B, lo que haga es solo mover a la columna B aquellas filas de la columna A que tengan datos, de forma tal que solo quede una columna que tenga todos los datos..

Por ejemplo de A9 a B9 y así en adelante. Ya que la que contiene los datos en la columna A esta vacía en la Columna B. En el ejemplo B9 esta vacía y A9 tiene Texto o números. Como adicional seria excelente que la columna A ya totalmente vacía sea eliminada.

Disculpa si mi explicación anterior no ha sido la correcta.

Muchas Gracias por tu respuesta!

Pd: Es excelente la 2da macro cada vez que se actualiza realiza el procedimiento.

Te anexo la macro

Sub Copiar_Valores()
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "A") <> "" Then Cells(i, "B") = Cells(i, "A")
    Next
    MsgBox "Fin"
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas