Buscar primera celda en blanco, seleccionar rango y copiar a otra hoja en excel.

Es mi primera consulta en el foro y soy principiante en macros.

Me pueden ayudar a redactar una macro para buscar en la columna "A" la primera celda vacía y seleccionar esa línea y la línea de arriba y copiarla a otra hoja y así sucesivamente con todos los datos de la hoja:

Ej.

           A                         B                  C

6407387187      OBPL195059     10
6407387188      OBPL195059       1
                             OBPL195153       8
6407387191       OBPL195150       3
6407387192       OBPL195149       2
6407387194       OBPL195149       2
6407387195        OBPL195149      1
6407387196        OBPL195149      1
                               OBPL195150      1
6407387197        OBPL195149      3
                               OBPL195152      8
6407387198         OBPL195152      9
6407387199         OBPL195150      3

Esto es lo que tengo hasta el momento:

Sub Macro2()

Dim ws As Worksheet

Set ws = ActiveSheet For Each cell In ws.Columns(1).Cells

If Len(cell) = 0 Then cell.Select: Exit For

Next cell

Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(-1, 2)).Select

Selection.Copy Sheets("pegar").Select

ActiveSheet.Paste

End Sub

Lo hace con la primera celda vacía pero requiero que lo haga con las siguientes.

Respuesta
3

[Ho la y bienvenido a todoexpertos.

"seleccionar esa línea y la línea de arriba"

Según tu ejemplo, ¿cuáles filas deben copiarse?

Hola Dante gracias por tu atención.

Sería la línea que contiene la celda vacía y la línea de arriba y abarcaría las columnas A, B y C.

Nota: La tabla puede tener hasta 900 líneas y entre ellas puede haber estas celdas vacías así que se requiere de copiarlas a otra hoja.

Nuevamente gracias.

Prueba lo siguiente:

Sub Copiar_Celda_y_CeldaBlanco()
  Dim a As Range, rng As Range
  For Each a In Range("A1", Range("A" & Rows.Count).End(3)(2)).SpecialCells(xlCellTypeConstants).Areas
    If rng Is Nothing Then Set rng = a.Cells(a.Rows.Count).Resize(2, 3) Else Set rng = Union(rng, a.Cells(a.Rows.Count).Resize(2, 3))
  Next
  rng.Copy Sheets("pegar").Range("A1")
End Sub

[al final de la respuesta hay un botón para valorar.

. Si tienes duda regresa a comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas