TRANSPONER EN VARIAS FILAS

12/03/2010 - 23:58 por FERNANDOMH | Informe spam
Hola a todos, ojalá me pudieran ayudar en algo creo que simple para ustedes
pero que a mi me sería de mucha utilidad:

Tengo una hoja de excel con datos de una nómina solo con datos en las
columnas B,C y D; en la columna B tengo el nombre del trabajador que se
repite por cada concepto de percepción o deducción, en la columna C tengo el
concepto de la percepción o la deducción y en la columna D tengo el importe
para esa percepción o deducción.

Los conceptos de percepciones y deducciones de un trabajador abarcan 22
filas y se repiten hacia abajo para el siguiente trabajador en el mismo orden
pero con la cantidad que le corresponde a cada uno de ellos.

Tengo datos desde la fila 1 hasta la 2332
Lo que quiero hacer el transponer esos datos en otra hoja del mismo libro a
partir de la celda C10 y que me copie los importes en las columnas de la C a
la X por cada concepto de percepción y deducción y que cada fila corresponda
a un trabajador diferente.


Desearía que los datos a transponer los pudiera yo seleccionar manualmente
así como el número de filas a transponer ya que tengo otros archivos con las
mismas características pero con diferentes rangos de datos y que varían
tanto en total de filas como en filas a transponer.

De antemano muchas gracias.
 

Leer las respuestas

#1 Héctor Miguel
13/03/2010 - 04:59 | Informe spam
hola, Fernando !

con el siguiente codigo, selecciona con los dialogos lo siguiente:
1) el rango que contiene los nombres de origen en tu listado/hoja correspondiente
2) la celda (y hoja) donde quieres que se inicie la extraccion de datos (persona por fila)
3) el numero de personas/conceptos que corresponda (segun tu ejemplo inicial: 22)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Acomoda_x_personas()
Dim Listado As Range, Destino As Range, Personas As Byte, Fila As Integer, n As Byte
Set Listado = Application.InputBox("Selecciona el rango de nombres en la lista", "Paso 1 de 3", "", , , , , 8)
If Listado Is Nothing Then GoTo Salida
Set Destino = Application.InputBox("Selecciona la cela de salida", "Paso 2 de 3", "", , , , , 8)
If Destino Is Nothing Then GoTo Salida Else Set Destino = Destino.Cells(1)
Personas = Val(InputBox("Indica el numero de personas", "Paso 3 de 3", 22))
If Personas = 0 Then GoTo Salida
Application.ScreenUpdating = False
Destino.Offset(, 1).Resize(, Personas).Value = _
Application.Transpose(Listado.Offset(, 1).Resize(Personas).Value)
For Fila = 1 To Listado.Rows.Count Step Personas: n = n + 1
Destino.Offset(n) = Listado.Offset(Fila - 1).Resize(1, 1).Value
Destino.Offset(n, 1).Resize(, Personas).Value = _
Application.Transpose(Listado.Cells(Fila).Offset(, 2).Resize(Personas).Value)
Next
Set Destino = Nothing
Set Listado = Nothing
Exit Sub
Salida:
MsgBox "Operacion cancelada por el usuario !"
End Sub

__ OP __
Tengo una hoja de excel con datos de una nomina solo con datos en las columnas B,C y D
en la columna B tengo el nombre del trabajador que se repite por cada concepto de percepcion o deduccion
en la columna C tengo el concepto de la percepcion o la deduccion
y en la columna D tengo el importe para esa percepcion o deduccion.
Los conceptos de percepciones y deducciones de un trabajador abarcan 22 filas
y se repiten hacia abajo para el siguiente trabajador en el mismo orden
pero con la cantidad que le corresponde a cada uno de ellos.
Tengo datos desde la fila 1 hasta la 2332
Lo que quiero hacer el transponer esos datos en otra hoja del mismo libro a partir de la celda C10
y que me copie los importes en las columnas de la C a la X por cada concepto de percepcion y deduccion
y que cada fila corresponda a un trabajador diferente.
Desearia que los datos a transponer los pudiera yo seleccionar manualmente asi como el numero de filas a transponer
ya que tengo otros archivos con las mismas caracteristicas
pero con diferentes rangos de datos y que varian tanto en total de filas como en filas a transponer.

Preguntas similares