Transponer campos de registros a columnas

Buenos días tengo un archivo en excel contiene registros de alumnos con sus cursos y secciones, existe mas de un registro (fila) por alumno donde se repite el nombre y código del alumno pero en la columna de curso y sección van variando, necesito una macros en excel para que solo haya un registro por alumno y que cada curso y sección pasen a ser columnas es decir tanta columnas como secciones y cursos (los cursos tienen su respectiva sección) por alumno.
Agradezco desde ya su tiempo por leer esta pregunta.
si pudieran poner su correo para enviarle el archivo y puedan entenderlo mejor.
Gracias
Atentamente
Rene

1 Respuesta

Respuesta
1

1. ¿El nombre y código del alumno están en diferentes columnas?

2. ¿La columna curso y sección son dos columnas?

3. Si puedes poner un ejemplo de cómo está y como lo quieres.

4, ¿Tiene qué ser con una macro?, porque lo puedes hacer muy sencillo con una tabla dinámica.

Hola:

1-si el código y el nombre están en diferentes columnas

2- el curso esta en una columna y la sección en otra columna.

codigo nombres curso seccion

123456 juan perez ingles 1 101

123456 juan perez mate1 101

123456 juan perez conta1 102

como ejemplo pongo solo un alumno, en realidad son como 1800, matriculados desde 1 a 12 cursos.

lo que deseo aqui es que aparezca de la siguiente forma

codigo nombres curso1 seccion1 curso2 seccion2 curso3 seccion3

123456 juan perez ingles1 101 mate1 101 conta1 102

de los tres registros que habian por cada alumno ahora solo hay 1 y contiene todos los cursos con sus respectivas secciones.

he intentado con tablas dinamicas pero no resulta por eso solo veo la solcion con na macros en excel.

gracias desde ya por leer la pregunta, espero me haya entendido.

Te anexo la macro:
Instrucciones
1. Abre tu hoja 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. Para ejecutarla presiona F5
Precondiciones:
1. Tu hoja de alumnos se debe llamar “Hoja1”
2. Debes crear una hoja destino donde la macro copiará el resultado llamada “Hoja2”
3. Todos los datos deberán estar ordenados por la columna código.

'***macro***
Sub alumnocurso()
'por.dam
Worksheets("Hoja1").Select
    ufil = ActiveCell.SpecialCells(xlLastCell).Row
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
Worksheets("Hoja2").Select
    ufildes = ActiveCell.SpecialCells(xlLastCell).Row
    ucoldes = ActiveCell.SpecialCells(xlLastCell).Column
una = 1
alumno = 1
Worksheets("Hoja1").Select
For i = 2 To ufil
    If una = 1 Then
        codigoant = Cells(i, 1)
        nombreant = Cells(i, 2)
        cursoant = Cells(i, 3)
        seccionant = Cells(i, 4)
        Worksheets("Hoja2").Select
        Cells(ufildes, 1).Value = codigoant
        Cells(ufildes, 2).Value = nombreant
        Cells(ufildes, 3).Value = cursoant
        Cells(ufildes, 4).Value = seccionant
        alumno = 2
        colfin = 5
        una = 2
    Else
        codigonvo = Cells(i, 1)
        nombrenvo = Cells(i, 2)
        cursonvo = Cells(i, 3)
        seccionnvo = Cells(i, 4)
        If codigoant = codigonvo Then
            'Llena cursos
            Worksheets("Hoja2").Select
            Cells(ufildes, colfin).Value = cursonvo
            colfin = colfin + 1
            Cells(ufildes, colfin).Value = seccionnvo
            colfin = colfin + 1
        Else
            'Cambia de nombre
            Worksheets("Hoja2").Select
            ufildes = ufildes + 1
            colfin = 1
            Cells(ufildes, colfin).Value = codigonvo
            colfin = colfin + 1
            Cells(ufildes, colfin).Value = nombrenvo
            colfin = colfin + 1
            Cells(ufildes, colfin).Value = cursonvo
            colfin = colfin + 1
            Cells(ufildes, colfin).Value = seccionnvo
            colfin = colfin + 1
            codigoant = codigonvo
            nombreant = nombrenvo
            cursoant = cursonvo
            seccionant = seccionnvo
        End If
    End If
    Worksheets("Hoja1").Select
Next
End Sub
'***Macro****

Saludos.Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas