Copiar la última celda de cada rango que tengo y pegar en otro libro

Soy nuevo en este foro. Y quisiera pedir de su apoyo tengo un gran problema.

Quiero una macro que me copie tres celdas que tengo en un archivo que llamó calificaciones.xls hoja "parcial"

1.- Quiero que me copie la última fila del primer bloque de la columna D. Y me la pegue en k12 de mi archivo final.xls

2.- Copiar la última fila de la misma columna D de mi segundo bloque pegar en j13 de mi archivo final.xls hoja1.

Es Esto es por que tengo muchas filas de los alumnos y un segundo bloque separado por filas vacias.

Datos

Datos

Datos

Vacías

Vacías

Datos

Datos

1 Respuesta

Respuesta
1

1. Mencionas que quieres copiar 3 celdas, pero solamente especificaste 2 celdas.

2. ¿En cuál fila empieza tu primer bloque?

Te anexo la macro para copiar 3 celdas y suponiendo que la fila inicial del primer bloque es la fila 2. Si solamente son celdas la macro funciona.

Sub CopiarCeldas()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.Worksheets("parcial")
    Set l2 = Workbooks("archivo final.xls")
    Set h2 = l2.Worksheets("Hoja1")
    '
    dest = Array("K12", "J13", "I14")
    n = 0
    bloque = True
    For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row + 1
        If h1.Cells(i, "D") = "" Then
            If bloque Then
                h2.Range(dest(n)) = h1.Cells(i - 1, "D")
                n = n + 1
                bloque = False
            End If
        Else
            bloque = True
        End If
    Next
    MsgBox "Celdas copiadas", vbInformation
End Sub

Antes que nada gracias reiteradas por leerme. Fíjate que copie el código y me aparece error

Se ha producido el error '9' en tiempo de ejecución:

Subiéndose fuera del intervalo

 línea en amarillo h2.rango(dest(n))=h1.cells(i-1."D")

Por favor de tu ayuda

¿Y en el libro destino qué te puso?

En el libro si me copia las celdas que quiero.esta correcto solo que ese error me aparece

¿Modificaste algo en la macro?

Prueba con la siguiente:

Sub CopiarCeldas()
'Por.Dante Amor
    on error resume next
    Set l1 = ThisWorkbook
    Set h1 = l1.Worksheets("parcial")
    Set l2 = Workbooks("archivo final.xls")
    Set h2 = l2.Worksheets("Hoja1")
    '
    dest = Array("K12", "J13", "I14")
    n = 0
    bloque = True
    For i = 2 To h1.Range("D" & Rows.Count).End(xlUp).Row + 1
        If h1.Cells(i, "D") = "" Then
            If bloque Then
                h2.Range(dest(n)) = h1.Cells(i - 1, "D")
                n = n + 1
                bloque = False
            End If
        Else
            bloque = True
        End If
    Next
    MsgBox "Celdas copiadas", vbInformation
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas