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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 FERNANDOMH
16/03/2010 - 18:48 | Informe spam
"Héctor Miguel" escribió:

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.


.
Hola Héctor Miguel, antes que todo, una disculpa por no haber respondido pronto, tuve que salir de la ciudad y apenas regresé.



Utilicé el código que me mandaste y desafortunadamente no me arroja los
resultados que yo espero, te explico:

Es la idea de lo que espero pero las cantidades que me arroja no
corresponden a los empleados; en primer lugar si le pido que me copie a
partir de la fila 1, si me copia los nombres de todos los trabajadores pero
solo me copia cantidades en los trabajadores de las filas números
1,4,7,10,13,16,19, y así sucesivamente, es decir deja de copiar en dos filas
para luego seguir copiando en la siguiente.
Las cantidades del primer empleado son las correctas, pero las cantidades
que copia en la fila 4 corresponden al empleado de la fila 2, las cantidades
de la fila 7 corresponden al empleado de la fila 3, las cantidades de la fila
10 corresponden al empleado de la fila 4 y así sucesivamente.

No sé si consideres oportuno que te mande mi archivo y como quiero que
resulte, si es así indícame a donde te lo puedo enviar.

Gracias por tu atención, saludos.
Respuesta Responder a este mensaje
#3 Héctor Miguel
17/03/2010 - 02:40 | Informe spam
hola, Fernando !

Utilice el codigo que me mandaste y desafortunadamente no me arroja los resultados que yo espero, te explico:

Es la idea de lo que espero pero las cantidades que me arroja no corresponden a los empleados
en primer lugar si le pido que me copie a partir de la fila 1, si me copia los nombres de todos los trabajadores
pero solo me copia cantidades en los trabajadores de las filas numeros 1,4,7,10,13,16,19, y asi sucesivamente
es decir deja de copiar en dos filas para luego seguir copiando en la siguiente.
Las cantidades del primer empleado son las correctas, pero las cantidades que copia en la fila 4 corresponden al empleado de la fila 2
las cantidades de la fila 7 corresponden al empleado de la fila 3, las cantidades de la fila 10 corresponden al empleado de la fila 4 ...
No se si consideres oportuno que te mande mi archivo y como quiero que resulte, si es asi indicame a donde te lo puedo enviar.



el codigo esta basado en al exposicion de tu consulta original (los dos primeros parrafos) donde dices:
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.







lo que hace suponer que los nombres se repiten durante 22 filas y asi por cada bloques de 22
(o los conceptos de percepcion/deduccion existentes), es mas...
con los datos desde la fila 1 hasta la fila 2332 (divididos por 22) hablamos de 106 "en nomina" (es correcto ?)
no alcanzo a comprender como es que cada fila se trata (ahora) de un nombre diferente (???)

por si tuvieras cualquier detalle "en el tintero" ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 FERNANDOMH
17/03/2010 - 18:31 | Informe spam
"Héctor Miguel" escribió:

hola, Fernando !

> Utilice el codigo que me mandaste y desafortunadamente no me arroja los resultados que yo espero, te explico:
>
> Es la idea de lo que espero pero las cantidades que me arroja no corresponden a los empleados
> en primer lugar si le pido que me copie a partir de la fila 1, si me copia los nombres de todos los trabajadores
> pero solo me copia cantidades en los trabajadores de las filas numeros 1,4,7,10,13,16,19, y asi sucesivamente
> es decir deja de copiar en dos filas para luego seguir copiando en la siguiente.
> Las cantidades del primer empleado son las correctas, pero las cantidades que copia en la fila 4 corresponden al empleado de la fila 2
> las cantidades de la fila 7 corresponden al empleado de la fila 3, las cantidades de la fila 10 corresponden al empleado de la fila 4 ...
> No se si consideres oportuno que te mande mi archivo y como quiero que resulte, si es asi indicame a donde te lo puedo enviar.

el codigo esta basado en al exposicion de tu consulta original (los dos primeros parrafos) donde dices:
>>> 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.

lo que hace suponer que los nombres se repiten durante 22 filas y asi por cada bloques de 22
(o los conceptos de percepcion/deduccion existentes), es mas...
con los datos desde la fila 1 hasta la fila 2332 (divididos por 22) hablamos de 106 "en nomina" (es correcto ?)
no alcanzo a comprender como es que cada fila se trata (ahora) de un nombre diferente (???)

por si tuvieras cualquier detalle "en el tintero" ?
saludos,
hector.


.
Hola Héctor Miguel, nuevamente gracias por responder.



Efectivamente se trata de 106 trabajadores y sí, se repiten sus nombres
durante las 22 filas de la siguiente manera:

B C D
FILA 1 Juan Pérez sueldo 100
FILA 2 Juan Pérez compensación 20
FILA 3 Juan Pérez aguinaldo 15
FILA 4 Juan Pérez f. de ahorro 10
FILA 5 Juan Pérez prima vac. 5
FILA 6 Juan Pérez impuestos 4
… ….
FILA 22 Juan Pérez neto 146

FILA 2311 Benito Ruíz sueldo 250
FILA 2312 Benito Ruíz compensación 30
FILA 2313 Benito Ruíz aguinaldo 25
FILA 2314 Benito Ruíz f. de ahorro 15
FILA 2315 Benito Ruíz prima vac. 10
FILA 2316 Benito Ruíz impuestos 10
… … …
FILA 2332 Benito Ruíz neto 320


Y como deseo que quede el resultado es asi:

C D E
I X
sueldo compensación impuestos neto
FILA 1 Juan Pérez 100 20 4 146
… … … … … …
FILA 106 Benito Ruíz 250 30 10 320


Con el código que me mandaste si me copia los nombres correctamente pero las
cantidades no corresponden a esos trabajadores como te indicaba anteriormente,

Espero haberme explicado mejor en esta ocasión.
Revisando los archivos que tengo me encuentro también que en algunos los
nombres solo aparecen al principio de cada serie de datos es decir para este
ejemplo solo aparecen en las filas 1,23,45,67 y así sucesivamente.

Me serviría el mismo código para lograr los mismos resltados?

Muchas gracias por la atención que le pones a mis consultas, saludos.
Respuesta Responder a este mensaje
#5 Héctor Miguel
18/03/2010 - 00:20 | Informe spam
hola, Fernando !

Efectivamente se trata de 106 trabajadores y si, se repiten sus nombres durante las 22 filas ...
Con el codigo que me mandaste si me copia los nombres correctamente pero las cantidades no corresponden a esos trabajadores ...
Revisando los archivos que tengo me encuentro tambien que en algunos los nombres solo aparecen al principio de cada serie ...
Me serviria el mismo codigo para lograr los mismos resltados?



1) pudiera ser un "error de semantica", ya que asigne el nombre de "personas" cuando quise decir "conceptos" (inputbox 3)

2) que le respondes/indicas/... en cada uno de los inputboxes a la macro (?)
(y cuales son los rangos de operacion reales ?)

comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida