Jump to content
temp01

Macro para transponer datos Excel Vba

Recommended Posts

[Hola 

Buenas tardes necesito de su ayuda.

Tengo una base de datos de 1200 registros de estudiantes con sus notas respectivas por cada ciclo.

En la hoja Base tengo todas las notas y necesito pasar a otra hoja resumen con los datos transpuestos


Aquí mi archivo de ejemplo con el resultado deseado.

BD-notas.xlsb

Share this post


Link to post
Share on other sites

Pues aquí dejo esto:

Sub Transponer()
Dim BASE, RESUMEN, Fila
'--.
Application.ScreenUpdating = False
Set BASE = Sheets("BASE")
Set RESUMEN = Sheets("RESUMEN")
'--
Fila = 1
RESUMEN.Range("A2:E" & RESUMEN.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents
For x = 3 To BASE.Range("A" & Rows.Count).End(xlUp).Row
   For y = 5 To BASE.Cells(2, Columns.Count).End(xlToLeft).Column
      If BASE.Cells(x, y) <> "" Then
         Fila = Fila + 1
         RESUMEN.Range("A" & Fila) = BASE.Range("B" & x)
         RESUMEN.Range("B" & Fila) = BASE.Range("C" & x)
         RESUMEN.Range("C" & Fila) = BASE.Range("D" & x)
         RESUMEN.Range("D" & Fila) = Replace(BASE.Cells(2, y), Chr(10), " ")
         RESUMEN.Range("E" & Fila) = BASE.Cells(x, y)
      End If
   Next
Next
End Sub

Macro válida para cualquier número de alumnos y asignaturas.

Share this post


Link to post
Share on other sites
Hace 11 horas, temp01 dijo:

[Hola estimado Gerson  no se como aplicarlo a mi demás registros con power query  haber si me indica gracias 

 

Power Query, trabaja similar a VBA, pero con otro lenguaje de programación, llamado M

Es una maravilla! , digamos que viene a reemplazar muchos procesos, en Excel (incluso mucho de VBA) 

Tiene 2 usos, con la interfaz y el otro con programación 

Para que veas, mi solución, posicionarse en la tabla, podrás ver en la barra título, herramientas de tabla, das clic en "Consultar", luego "Editar" consulta [todo esto varía según la versión de Excel] 

Para 2010 y 2013 puedes bajar el complemento para utilizarlo, es gratis y version posterior ya viene integrada, como parte de sus herramientas nativas, en el menú DATOS 

Busca por el foro, distintas soluciones y explicaciones, como además por la red

 

Saludos!!! 

Share this post


Link to post
Share on other sites
Hace 11 horas, temp01 dijo:

Hola ANTONI me gustaría entender que hace esta línea 


RESUMEN.Range("D" & Fila) = Replace(BASE.Cells(2, y), Chr(10), " ")

Un ejemplo vale mas que 1000 palabras, observa la celda O2 de la hoja BASE, verás que esta formada por 2 palabras Investigación y Educativa y que están en líneas diferentes, esto es así porque hay un carácter LF entre ambas. (Esto lo provocaste tú al pulsa Alt+Enter entre ambas palabras).

Para conseguir el efecto contrario y que ambas palabras aparezcan como una sola línea de texto es necesario eliminar el carácter LF(Carácter 10 ASCII), esto lo conseguimos sustituyéndolo por un espacio en blanco.

Para que te quede mas claro, prueba la macro con esta línea para observar la diferencia.

RESUMEN.Range("D" & Fila) = BASE.Cells(2, y)

 

Edited by Antoni

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy