TRANSPONER EN VARIAS FILAS

7 envíos / 0 nuevos
Último envío
Fernando Martínez
Imagen de Fernando Martínez
Offline
última acción: Hace 7 años 3 meses
alta: 22/06/2012 - 21:11
Puntos: 109
TRANSPONER EN VARIAS FILAS

 

Hola a todos, acudo  al foro para solicitar su valioso apoyo  en un problema que tengo; les explico:

Importo a Excel datos de un programa de nóminas que me arroja los datos de todos los trabajadores en forma vertical, como se muestra en la hoja “15-ABRIL-2014” del archivo “NÓMINA ACTUAL” que adjunto, lo que yo quiero es  mediante una macro transponer esos datos como lo muestro en la hoja “RESULTADO” del  mismo archivo.

Algunas consideraciones:

1.- El sistema de nómina exporta a Excel solo una hoja (la hoja con el nombre de la quincena) y mi deseo es crear una hoja nueva y ahí transponer los  datos y dejar  intactos  los datos importados.

2.- El número de trabajadores es variable porque manejo varias nóminas que pueden ser hasta de 700 trabajadores.

3.- El número de percepciones y deducciones también es variable dependiendo de la empresa.

Lo que yo deseo es:

1.- Que la macro se encuentre en un archivo independiente para poder ejecutarlo al abrir cada archivo de cada quincena.

2.- Poder  ejecutar esta macro en archivos con diferentes números de empleados así como diferentes números de percepciones y deducciones, esto mediante un Inputbox que me pida tanto el rango a transponer como el número de percepciones y deducciones que se repiten en cada archivo ya que como lo mencioné anteriormente son variables dependiendo de la empresa.

3.- Utilizo Excel 2007.

Anteriormente esto lo hacía con una macro que me encontré en internet, pero resulta que se actualizó el sistema de nóminas y ahora exporta los archivos de manera diferente y la macro ya no me arroja los resultados deseados.

Para que comprendan mejor lo que deseo, adjunto también como exportaba anteriormente el programa de nómina y la macro que ocupaba.

 

Aprecio su valiosa ayuda ya que soy principiante en esto de Excel, solo sé utilizar la macro.

AdjuntoTamaño
File nomina_actual.xlsx83.3 KB
File nomina_anterior.xlsx127.49 KB
File macro_anterior.xlsm14.32 KB

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 7 horas 52 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: TRANSPONER EN VARIAS FILAS

¿los 30 conceptos que aparecen en cada trabajador, serán siempre los mismos? ¿siempre aparecen en el mismo orden para todos los trabajadores del listado?

 

------
Ya sé Excel, pero necesito más.

Fernando Martínez
Imagen de Fernando Martínez
Offline
última acción: Hace 7 años 3 meses
alta: 22/06/2012 - 21:11
Puntos: 109
Re: TRANSPONER EN VARIAS FILAS

Hola Paco, gracias por responder....

 

 

Los conceptos no serán siempre los mismos, pueden ser distintos y no siempres son 30, pueden variar en número también y sí, siempre aparecen en el mismo orden para todos los trabajadores del listado.

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 7 horas 52 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: TRANSPONER EN VARIAS FILAS

Bueno, podrías tratar de hacer un bucle que recorriese las celdas.

El cambio de persona lo puedes detectar porque en la columna Concepto no está vacía, hay un guión, eso querría decir que tendrías que cambiar de fila.

 

Se me ocurre por ejemplo lo siguiente (tendrías que añadir la comprobación para situarte en la hoja con los datos, o podrías hacer algo parecido a tu macro anterior, preguntando al usuario)

 

'Defino unas constantes para decirle en qué columna está cada dato, así si vuelven a cambiar el formato será más sencillo adaptarlo

Const columnaconcepto = 1

Const columnatabajador = 2

Const columnaacumulado = 3

Const filaprimerdato = 2

 

'Defino también a partir de qué celda quiero empezar a poner los datos en la hoja de destino

Const celdaprimerdatotranspuesto = "A1"

 

'Definimos unas variables para las hojas de origen y destino:

Dim hojadatos As Worksheet, hojaresultado As Worksheet

 

'y unos contadores para colocar los datos en destino

Dim contadorfilas, contadorcolumnas

 

    Set hojadatos = ActiveSheet

    Set hojaresultado = ActiveWorkbook.Worksheets.Add  'creo una nueva hoja para poner los datos

    

    hojadatos.Activate

    Cells(filaprimerdato, columnaconcepto).Select

    

    contadorfilas = 0

    contadorcolumnas = 0

 

    Do Until IsEmpty(ActiveCell.Offset(0, 1)) 'recorremos la hoja activa hasta que no haya nada en la columna de la derecha (la 2)

        If Not IsEmpty(ActiveCell) Then

            'si no está activa la celda activa (en la columna 1) es qeu tenemos un nuevo nombre de trabajador

   ' en este caso aumentamos el contador de filas en uno y ponemos a cero el contador de columnas

            contadorfilas = contadorfilas + 1

            contadorcolumnas = 0

      ' y copiamos el dato de la columna trabajador (el nombre del trabajador en la posición (contadorfilas,contadorcolumnas)

            hojaresultado.Range(celdaprimerdatotranspuesto).Offset(contadorfilas, contadorcolumnas).Value = ActiveCell.Offset(0, columnatabajador - columnaconcepto).Value

        Else  'si no, es un dato de detalle, copiamos el dato de la columna acumulado

            hojaresultado.Range(celdaprimerdatotranspuesto).Offset(contadorfilas, contadorcolumnas).Value = ActiveCell.Offset(0, columnaacumulado - columnaconcepto).Value

            If contadorfilas = 1 Then

                'la primera vez, copiamos el encabezado

                hojaresultado.Range(celdaprimerdatotranspuesto).Offset(contadorfilas - 1, contadorcolumnas).Value = ActiveCell.Offset(0, columnatabajador - columnaconcepto).Value

            End If

        End If

   ' aumentamos el contador de columnas para el siguiente dato

            contadorcolumnas = contadorcolumnas + 1

   ' y ativamos la celda de abajo      

        ActiveCell.Offset(1, 0).Select

    Loop

 
 
Bueno, te adjunto un ejemplo con esto mismo
 
AdjuntoTamaño
File nomina_actual.xlsm75.16 KB

 

------
Ya sé Excel, pero necesito más.

Fernando Martínez
Imagen de Fernando Martínez
Offline
última acción: Hace 7 años 3 meses
alta: 22/06/2012 - 21:11
Puntos: 109
Re: TRANSPONER EN VARIAS FILAS

Hola Paco,  chequé el archivo adjunto y es exactamente lo que necesito, eres grande......muchas gracias por tomarte el tiempo para reponder y compartir tus conocimientos.

Por mi parte doy por cerrado el tema.

Sandra Valderrama (no verificado)
Imagen de Sandra Valderrama
Transponer celdas

[comentario duplicado en tema http://www.necesitomas.com/transponer-celdas]

MArtial (no verificado)
Imagen de Sandra Valderrama
Transponer como formulas

Hola en myexceltools.com hay producto llamado Spreadsheet image tools... instalarlo y prueba el botón transponer...sirve para varias filas y columnas como formula

Saludos