Macro para reacomodar datos en otra hoja...

Hola buen día...
Una breve pregunta...
Tengo una hoja como a continuación se describe:
Aprobado folio nombre paterno codigo1 codigo2 codigo3
     SI 001 Juan Perez 11111 22222 33333
                     002 Jose Sanchez 4444 55555 6666
     SI 003 Pedro Juarez 7777 8888
Al poner "SI" en la columna APROBADO me pase los valores a otra hoja de la manera siguiente:
          Folio nombre paterno códigos
          001 Juan Perez 11111
          001 Juan Perez 22222
          001 Juan Perez 33333
          003 Pedro Juarez 7777
          003 Pedro Juarez 8888
Dependiendo de que tantos códigos tenga son las veces que se van a repetir los valores de las columnas FOLIO, NOMBRE y PATERNO.
¿La mejor opción seria con macros?
Saludos y muchas gracias por la ayuda.

1 Respuesta

Respuesta
1
El libro que he hecho tiene las hojas MAESTRO con todos los datos y COPIA donde se copian como tu quieres.
En Herramientas Macro Editor de Visual basic despliega a la izquierda vbaproject y luego thisworkbook y pega este código.
Dim z
Sub verificarAprobados()
encontrarUltimoRegistro
i = 2
While Sheets("MAESTRO").Cells(i, 2).Value <> ""
    If Sheets("MAESTRO").Cells(i, 1).Value = "SI" Then
        j = 5
        While Sheets("MAESTRO").Cells(i, j).Value <> ""
            Sheets("COPIA").Cells(z, 1).Value = Sheets("MAESTRO").Cells(i, 2).Value
            Sheets("COPIA").Cells(z, 2).Value = Sheets("MAESTRO").Cells(i, 3).Value
            Sheets("COPIA").Cells(z, 3).Value = Sheets("MAESTRO").Cells(i, 4).Value
            Sheets("COPIA").Cells(z, 4).Value = Sheets("MAESTRO").Cells(i, j).Value
            j = j + 1
            z = z + 1
        Wend
    End If
    i = i + 1
Wend
End Sub
Sub encontrarUltimoRegistro()
z = 2
While Sheets("MAESTRO").Cells(z, 1).Value <> ""
    z = z + 1
Wend
If z <> 2 Then
    z = z - 1
End If
End Sub
Hola muchas gracias por tu tiempo..
Lo probé y funciono correctamente solo una vez pero ya no logre hacerlo trabajar.
Saludos
No te entiendo. Si vas a herramientas, macros, ¿macro no tienes una que es verificarAprobados y si la ejecutas no funciona?
Encontré un error en el código que buscaba en donde estaba el ultimo registro de la hoja copia. Pega este nuevo código y prueba.
Dim z
Sub verificarAprobados()
encontrarUltimoRegistro
i = 2
While Sheets("MAESTRO").Cells(i, 2).Value <> ""
    If Sheets("MAESTRO").Cells(i, 1).Value = "SI" Then
        j = 5
        While Sheets("MAESTRO").Cells(i, j).Value <> ""
            Sheets("COPIA").Cells(z, 1).Value = Sheets("MAESTRO").Cells(i, 2).Value
            Sheets("COPIA").Cells(z, 2).Value = Sheets("MAESTRO").Cells(i, 3).Value
            Sheets("COPIA").Cells(z, 3).Value = Sheets("MAESTRO").Cells(i, 4).Value
            Sheets("COPIA").Cells(z, 4).Value = Sheets("MAESTRO").Cells(i, j).Value
            j = j + 1
            z = z + 1
        Wend
    End If
    i = i + 1
Wend
End Sub
Sub encontrarUltimoRegistro()
z = 2
While Sheets("COPIA").Cells(z, 1).Value <> ""
    z = z + 1
Wend
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas