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.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • Hola buenas tardes amigos de Ayuda Excel Estoy parado en una macro que no he podido resolver a ver si pueden ayudarme. Gracias de antemano por su colaboración. Les explico. El archivo tiene varias hojas, Una se llama control enero, control febrero y asi sucesivamente La macro la voy a ejecutar en cada hoja Lo que debe hacer la macro es: 1)      copiar la celda A3, que es una formula, de la Hoja CONTROL 1  a la primera fila disponible de la columna A5 de la Hoja Control General. 2)      Copiar la celda j22 de Control 1 (que es una formula), como valor sin negrita a la primera fila disponible de F5 de la Hoja Control general. 3)      Hacer una botón para ejecutar la macro, teniendo en cuenta que solo debe ejecutarse si la celda j25 de la Hoja Control 1 es igual a SI. Por el contrario si es igual a NO, no debe permitir la ejecución de la macro. Pudiera ser advertido al usuario mediante un MSGBOX. 4)      Por último la posición de las celdas J22 y j25 pueden variar de hoja a hoja según la información introducida en cada hoja. Agradecidos de antemano por la colaboración prestada. LB Anexo archivo CONTROL GENERAL.xlsm
    • Un nuevo aporte para finalizar el proyecto Tengo el archivo funcionando cuando el usuario requiere solo una hoja activa. cuando se requiere que mas hojas estén activas no funciona. Ejemplo el user marco pass 123 debería tener activas las hojas "Registro, Registro1, Registro2". Con el codigo actual solo funciona la hoja "Registro" Ademas un favor extra que dependiendo el usuario que inicie sección ponga el Nombre de la columna "Nombre" en ("01.Adeudos" tabla "usuarios") del archivo en ACCESS y lo pegue en la hoja "Principal" celda C7 del archivo de EXCEL. en el siguiente enlace esta un ejemplo del proyecto. https://mega.nz/file/YRpRXZTL#Uynlq0oW77Eo0VbME26yYkKc1g7jXXu9w1AwfbFlRp0 De nuevo muchas gracias por toda la ayuda en el proyecto. Saludos
    • Hola buenas tardes amigos de Ayuda Excel. Quería preguntar si hay alguna manera de copiar y pegar una celda que tiene un prefijo en otra celda pero que el prefijo APAREZCA en la barra de fórmula. Gracias
    • Todo en la misma hoja.   Filtro Antoni.xlsm
    • Hola @Persal95 Una posible solución, Espero que sea de utilidad. Nos comentas.EJEMPLO AYUDA EXCEL 1.1.xlsx
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy