como unir varios listado de excel en uno solo

08/07/2005 - 15:43 por Valterro | Informe spam
Cada mes tengo que convertir un libro de excel con unas 70 hojas (listados)
en un único listado. los listados de origen son similares, aunque algunos
tienen algun campo diferente, suelen tener unos 40 campos y nunca mas de 25
registros.

¿alguien me puede echar una mano?

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/07/2005 - 06:40 | Informe spam
hola, Valterro !

Cada mes tengo que convertir un libro de excel con unas 70 hojas (listados) en un unico listado.
los listados de origen son similares, aunque algunos tienen algun campo diferente
suelen tener unos 40 campos y nunca mas de 25 registros.
alguien me puede echar una mano?



[creo que] con los 'pocos detalles' que aportas... las propuestas que recibas... [cualquiera]...
o... resulta ser 'la solucion'... :)
o... pudiera causarte 'serios destrozos'... :-(
[de cualquier forma... y] cualquiera sera un 'buen?' comienzo :))

prueba ->con una copia de tu archivo 'original'<- las siguientes lineas...
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Concentrar_Hojas()
Application.ScreenUpdating = False
Dim Sig As Byte, Eliminar As Boolean
If MsgBox("Deseas eliminar las hojas ""concentradas"" al final del proceso?", _
vbQuestion + vbYesNo + vbDefaultButton2, "Favor de confirmar...") = vbYes _
Then Eliminar = True
For Sig = 2 To Worksheets.Count
Worksheets(Sig).UsedRange.Copy _
Worksheets(1).Range("a65536").End(xlUp).Offset(1)
Next
If Not Eliminar Then Exit Sub
Application.DisplayAlerts = False
For Sig = 2 To Worksheets.Count
Worksheets(2).Delete
Next
Application.DisplayAlerts = True
End Sub

[supongo que] ya se ira 'ajustando'... segun vayas 'soltando' los detalles que [de momento] quedan 'en el tintero' :))
Respuesta Responder a este mensaje
#2 Valterro
09/07/2005 - 17:32 | Informe spam
Muchísimas gracias Héctor,

Me ha dejado sorprendido tu respuesta, desde luego sois muchos los genios
anónimos que andais por ahi sueltos. Pero como tú bien me decías la solución
no resuelve mi problema por lo parca que ha sido mi explicación, así que paso
a detallarte cual es mi problema, a ver si no lo enrollo más en vez de
aclararlo.

Lo voy a dividir en cuatro apartados. Lo que recibo, lo que necesito, mi
solución intermedia y mi petición o pregunta.

LO QUE RECIBO:

A mi me llega un archivo llamado costes1.xls, que incluye listados de
nóminas de unos 300 trabajadores de distintas empresas. Son unos 70 listados
y cada listado viene en una hoja de excel. De modo que cada fila es un
registro y cada columna un campo. Cada registro es un trabajador y los campos
son del estilo:

"NSS Empresa NSS
Trabajador Trabajador Salario Antigüedad Idiomas Títulos Tóxicos Nocturnos Incentivo Actividad Asistencia Horas
Ex. Gratif.Extra. Partic. Benef. Prod. Especie Residencia COMPL.PER A
CTA.CON ATRASOS C"

Los listados vienen separados en hojas porque se separan por empresa y por
categoría laboral, además de que no pueden contener más de 25 registros
seguidos. y los campos son unos 100 campos diferentes. Cada trabajador está
asociado a una empresa por un campo "NIF de Empresa" y a un centro de coste
por un campo "Centro de Trabajo". Todos los listados (Hojas) tienen
encabezado (Título).

LO QUE NECESITO:

Necesito hacer un listado de la suma de ciertos campos agrupados por los
campos "NIF de Empresa" y "Centro de trabajo"

MI SOLUCIÓN INTERMEDIA:

Al estar en distintos listados y hojas no sabia como sumar esos campos
agrupados por ciertos campos, asi que cree una macro (mucho mas tosca que la
tuya) que desde otro libro me copiaba todos los listados del libro
costes1.xls a un listado unico, y en una segunda hoja me daba el listado que
necesitaba. Te pego la macro a continuación:

Sub Autoexec()

'
' copiar_tablas Macro
' Macro grabada el 08/06/2005 por Juan Carlos Pose
'
ActiveSheet.Range("A1").Select
Range("A1:CN1372").Select
Selection.ClearContents
ActiveSheet.Range("A1").Select

'
Workbooks("Costes1.xls").Sheets(1).Range("A1:CN20").Copy
ActiveSheet.Range("A2").Select
ActiveSheet.Paste
Workbooks("Costes1.xls").Sheets(2).Range("A2:CN21").Copy
ActiveSheet.Range("A20").Select
ActiveSheet.Paste

.
.
.


ActiveSheet.Paste
Workbooks("Costes1.xls").Sheets(68).Range("A2:CN21").Copy
ActiveSheet.Range("A1340").Select
ActiveSheet.Paste

Range("A2:CN1346").Select
Range("CN1346").Activate
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess,
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A1").Select



End Sub


Esta macro, al igual que la tuya me juntaba todos los listados en uno, mi
problema es que aunque los listados tienen practicamente el mismo formato,
algunos cambian ligeramente, pues algunos listados pertenecen a convenios
laborales distintos y tienen algún campo a mayores o de menos. Con lo cual,
al pegar los distintos listados en el mismo orden, y en base al titulo del
primer listado, queda todo desordenado.


MI PETICION O PREGUNTA

¿Podría crear de alguna manera un listado que tuviese la suma de todos los
campos de los demás listados, y meter en él todos los registros ordenados por
campos? y asi de ese modo poder hacer la suma condicional de los campos que
quiera. O a lo mejor mas fácil, ¿hay alguna forma de que pueda hacer una suma
condicional en base dos criterios y en un rango de varias hojas?


Espero no haberlo liado todavía más, en todo caso muchísimas gracias por
haberte parado a leer este rollazo, lo cual ya es un reto. y si lo entiendes
y encuentras una solución, te estaría más que agradecido.

Muchas gracias,

Valterro
Respuesta Responder a este mensaje
#3 Héctor Miguel
10/07/2005 - 00:40 | Informe spam
hola, Valterro !

1) .. RECIBO: ... un archivo... listados de nominas... de distintas empresas
... unos 70 listados y cada listado viene en una hoja de excel
... cada fila es un registro y cada columna un campo... cada registro es un trabajador y los campos son del estilo [...]
... listados... separados en hojas... no pueden contener mas de 25 registros... los campos son unos 100... diferentes.
... trabajador... asociado a una empresa... campo "NIF de Empresa" y a un centro... por... campo "Centro de Trabajo".
2) .. NECESITO: ... un listado de la suma de ciertos campos agrupados por... "NIF de Empresa" y "Centro de trabajo"
3) .. MI SOLUCION INTERMEDIA: ... una macro... copiaba todos los listados... a un listado unico [...]
... problema... aunque los listados... practicamente el mismo formato, algunos cambian ligeramente
... al pegar los distintos listados en el mismo orden, y en base al titulo del primer listado, queda todo desordenado.
4) .. PREGUNTA: ... crear... un listado que tuviese la suma de todos los campos de los demas listados
... meter en el todos los registros ordenados por campos? y... hacer la suma condicional de los campos que quiera
... a lo mejor mas facil... alguna forma de... hacer una suma condicional en base dos criterios y en un rango de varias hojas?

pues... vaya que 'la situacion' que necesitas resolver [al menos... 'parece' que]... esta 'complicadilla' :-(
[probablemente] se podria [al menos 'intentar'...] usar las funciones sumar.si() y contar.si() en una forma 'tri-dimensional' ;)
[SI... y siempre y cuando...] si 'logras...' [o 'adaptas a...'] que para todos los listados [o sus hojas]...
1) LOS CAMPOS 'clave' [NIF de Empresa y Centro de trabajo, asi como 'otros' campos que te interese 'recuperar/sumar/...]
-> COINCIDAN en una misma columna <-
2) LOS NOMBRES de las hojas... puedan ser 'monitoreados' [p.e.] a traves de una 'numeracion consecutiva'...
-> y 'mantengan' una especie de 'patron' [p.e. HojaEmp1, HojaEmp2, HojaEmp1000... HojaConv1, etc.] por 'grupos' ?
3) LAS HOJAS que se vayan a sumar/contar/... [quizas 'por grupos'] QUEDEN dentro de un 'orden de tabulacion'...
-> [p.e.] que la numeracion inicial SEA '1' y la ultima tenga la numeracion 'mas alta' [las demas?... ->dentro del rango<-] ;)

como [al parecer] 'estamos hablando' de +/- 100 campos/columnas y... 'algunas'... 'diferentes' [cuales?... cuantas?... donde?...]
[probablemente] 'convendria' [al menos 'intentar' con] una 'estandarizacion' en el formato de las hojas :))
[aunque de seguro]... 'aqui'... te vas a 'topar'... con algun/os usuario/s 'renuente/s' a 'adaptarse a los cambios' :-(
[creo que]... 'dejarle' al codigo que 'busque... compare... corrija... prevenga... ?? [podriamos 'dejarlo' para el siguiente 'intento'] :))

comentas si 'podemos darle'... por el lado de las operaciones 3-d ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Valterro
10/07/2005 - 11:52 | Informe spam
Muchas gracias de nuevo Hector,


Si, creo que podríamos intentar darle por el lado de las operaciones 3d,
aunque no tengo ni idea de como hacerlo.

Los campos principales "NiF empresa" y "Centro de trabajo" podríamos tratar
de unirlos en una columna.

Gracias

"Héctor Miguel" escribió:

hola, Valterro !

1) .. RECIBO: ... un archivo... listados de nominas... de distintas empresas
... unos 70 listados y cada listado viene en una hoja de excel
... cada fila es un registro y cada columna un campo... cada registro es un trabajador y los campos son del estilo [...]
... listados... separados en hojas... no pueden contener mas de 25 registros... los campos son unos 100... diferentes.
... trabajador... asociado a una empresa... campo "NIF de Empresa" y a un centro... por... campo "Centro de Trabajo".
2) .. NECESITO: ... un listado de la suma de ciertos campos agrupados por... "NIF de Empresa" y "Centro de trabajo"
3) .. MI SOLUCION INTERMEDIA: ... una macro... copiaba todos los listados... a un listado unico [...]
... problema... aunque los listados... practicamente el mismo formato, algunos cambian ligeramente
... al pegar los distintos listados en el mismo orden, y en base al titulo del primer listado, queda todo desordenado.
4) .. PREGUNTA: ... crear... un listado que tuviese la suma de todos los campos de los demas listados
... meter en el todos los registros ordenados por campos? y... hacer la suma condicional de los campos que quiera
... a lo mejor mas facil... alguna forma de... hacer una suma condicional en base dos criterios y en un rango de varias hojas?

pues... vaya que 'la situacion' que necesitas resolver [al menos... 'parece' que]... esta 'complicadilla' :-(
[probablemente] se podria [al menos 'intentar'...] usar las funciones sumar.si() y contar.si() en una forma 'tri-dimensional' ;)
[SI... y siempre y cuando...] si 'logras...' [o 'adaptas a...'] que para todos los listados [o sus hojas]...
1) LOS CAMPOS 'clave' [NIF de Empresa y Centro de trabajo, asi como 'otros' campos que te interese 'recuperar/sumar/...]
-> COINCIDAN en una misma columna <-
2) LOS NOMBRES de las hojas... puedan ser 'monitoreados' [p.e.] a traves de una 'numeracion consecutiva'...
-> y 'mantengan' una especie de 'patron' [p.e. HojaEmp1, HojaEmp2, HojaEmp1000... HojaConv1, etc.] por 'grupos' ?
3) LAS HOJAS que se vayan a sumar/contar/... [quizas 'por grupos'] QUEDEN dentro de un 'orden de tabulacion'...
-> [p.e.] que la numeracion inicial SEA '1' y la ultima tenga la numeracion 'mas alta' [las demas?... ->dentro del rango<-] ;)

como [al parecer] 'estamos hablando' de +/- 100 campos/columnas y... 'algunas'... 'diferentes' [cuales?... cuantas?... donde?...]
[probablemente] 'convendria' [al menos 'intentar' con] una 'estandarizacion' en el formato de las hojas :))
[aunque de seguro]... 'aqui'... te vas a 'topar'... con algun/os usuario/s 'renuente/s' a 'adaptarse a los cambios' :-(
[creo que]... 'dejarle' al codigo que 'busque... compare... corrija... prevenga... ?? [podriamos 'dejarlo' para el siguiente 'intento'] :))

comentas si 'podemos darle'... por el lado de las operaciones 3-d ?
saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
10/07/2005 - 21:14 | Informe spam
hola, Valterro !

... podriamos intentar darle por el lado de las operaciones 3d, aunque no tengo ni idea de como hacerlo.
... "NIF empresa" y "Centro de trabajo" podriamos tratar de unirlos en una columna.



[ahora 'caigo' con que el tema ya se ha tratado en el foro en ocasiones anteriores] :))
no creo que sea necesario 'unir' campos en uno solo... sino 'estar ciertos' de en que columna esta 'cada campo' :))
mira si puedes 'ir adaptando' de las comversaciones en: http://tinyurl.com/exo9t ;)

si cualquier duda... o informacion adicional... o prefieres que te haga llegar un archivo con ejemplos... comentas?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida