Copiar filas de una hoja a otra de acuerdo a condicion

He estado investigando sobre macros que puedan copiar los datos de filas, como ejemplo : (desde A7:AD7) dependiendo de la condición a otra hoja llamada "Estado", básicamente es para tener en otra hoja a los estudiantes reprobados teniendo menos de 51 puntos en su promedio total ubicado en AD7, agradezco mucho de antemano su colaboración a todos!

Respuesta
1

[Hola 

Te paso la macro 

Sub copiar()
'valora la respuesta para finalizar
'Adriel
'
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Estado")
    '
    For i = 7 To h1.Range("A" & Rows.Count).End(xlUp).Row
       If h1.Cells(i, "AD") < 51 Then
       u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        h1.Rows(i).Copy h2.Rows(u2)
       End If
    Next i
End Sub

Funciona perfecto!, ¿Tal vez se le pudiera poner un limite? Desde A7 hasta A46, más abajo tengo otros datos y también me lo copia cuando cumple la función, pero quedaría mejor si tuviera el limite por favor.

Bueno investigando mi anterior duda la macro quedo así:

Sub copiar()
'valora la respuesta para finalizar
'Adriel
'
Set h1 = Sheets("1er Bimestre")
Set h2 = Sheets("Estado")
'
For i = 7 To h1.Range("A" & "A47").End(xlUp).Row
If h1.Cells(i, "AD") < 51 Then
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h1.Rows(i).Copy h2.Rows(u2)
End If
Next i
End SubEl único inconveniente es que esta copiando de forma incorrecta las primeras columnas, como en el siguiente ejemplo:

En las columnas B hasta DE, tendrían que ir los apellidos de los estudiantes, pero esta copiando datos de las filas de arriba o datos aleatorios, muchas gracias por tu tiempo!

Te paso la macro

Sub copiar()
'valora la respuesta para finalizar
'Adriel
'
Set h1 = Sheets("1er Bimestre")
Set h2 = Sheets("Estado")
'
    For i = 7 To 47
        If h1.Cells(i, "AD") < 51 Then
            u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
            h1.Rows(i).Copy h2.Rows(u2)
        End If
    Next i
    MsgBox "fin"
End Sub

Muchas gracias por tu tiempo, te lo agradezco mucho, sigo con un pequeño inconveniente. La macro hace la misma función que la anterior exactamente, es decir no copia los nombres de los estudiantes : (.En todo caso tengo otra macro que podría funcionar teóricamente copiando datos específicos, solo que me sale el error 9, la macro es la siguiente:El error se da en esta línea :

Sub transferirdatos()

Dim ultFilaDatos As Long
Dim ultFilaEstado As Long


Dim numerodelista As Double
Dim apellido1 As String
Dim apeliido2 As String
Dim nombres As String
Dim promedio As Double
Dim cont As Long

ultFilaDatos = Sheets("1er Bimestre").Range("A" & Rows.Count).End(xlUp).Row
For cont = 7 To ultFilaDatos
numerodelista = Sheets("1er Bimestre").Cells(cont, 1)
apellido1 = Sheets("1er Bimestre").Cells(cont, 2)
apellido2 = Sheets("1er Bimestre").Cells(cont, 3)
nombres = Sheets("1er Bimestre").Cells(cont, 4)
promedio = Sheets("1er Bimestre").Cells(cont, 5)

If promedio < 51 Then
ultFilaEstado = Sheets("Estado").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Estado").Cells(ultFilaDatos + 1, 1) = numerodelista
Sheets("Estado").Cells(ultFilaDatos + 1, 2) = apellido1
Sheets("Estado").Cells(ultFilaDatos + 1, 3) = apellido2
Sheets("Estado").Cells(ultFilaDatos + 1, 4) = nombres
Sheets("Estado").Cells(ultFilaDatos + 1, 5) = promedio
End If

Next cont

End Sub

Asegúrate que el nombre de la hoja esté escrito correctamente sin espacios

En la macro que presentas la condición está en la columna E pero según la imagen es AD

Pero si quieres copiar algunas columnas te paso otra

Sub copiar()
'valora la respuesta para finalizar
'Adriel
'
Set h1 = Sheets("1er Bimestre")
Set h2 = Sheets("Estado")
'
    For i = 7 To 47
        If h1.Cells(i, "AD") < 51 Then
            u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
            h2.Range(u2, 1) = h1.Cells(i, 1)
            h2.Range(u2, 2) = h1.Cells(i, 2)
            h2.Range(u2, 3) = h1.Cells(i, 3)
            h2.Range(u2, 4) = h1.Cells(i, 4)
            h2.Range(u2, 5) = h1.Cells(i, 5)
            '
            '
            '
        End If
    Next i
    MsgBox "fin"
End Sub

¡Gracias!, muy agradecido por tu tiempo Adriel Ortiz, me ayudo bastante en lo que necesitaba.

'Te faltó valorar la respuesta para finalizar 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas