Generar listado a partir de varias hojas

12/12/2007 - 15:40 por mamo66 | Informe spam
Hola amigos

Felicidades a todos los que participan en el grupo, debo
comentarles que he aprendido mucho en este foro. Bueno, les explico.

Hace tiempo que estoy buscando una forma de automatizar este
procedimiento, si bien es sierto lo tengo solucionado en parte, pero,
lo que pasa que cada vez que cambio o agrego una linea a la seccion de
datos tengo que cambiar todo.

Tengo un Libro que tiene 31 hojas (Dia1, Dia2, Dia3etc),
que cada una representa un dia del mes, en cada una de ellas tengo
tres rangos con datos que corresponden a movimiento de tarjetas de
credito, los rango son:

1.- M45:Q94
2.- AM45:AQ94
3.- BM45:BQ94

estos datos estan en la misma posicion en todas las hojas (Dia 1.
al Dia 31).

Entonces, necesito, a traves de una macro, generar una nueva hoja, con
un listado de todos los movimientos desde el dia 1 al dia 31. Ojo, que
dentro de estos rangos, podrian haber menos datos no quiere decir que
los rangos estan llenos de datos podrian haber 10 mov. en otro
podrian haber 30 mov. etc.

Por favor, espero alguien me ayude.
Saludos

Preguntas similare

Leer las respuestas

#1 Ivan
12/12/2007 - 16:41 | Informe spam
hola,

Tengo un Libro que tiene 31 hojas (Dia1, Dia2, Dia3etc),
que cada una representa un dia del mes, en cada una de ellas tengo
tres rangos con datos que corresponden a movimiento de tarjetas de
credito, los rango son:

1.- M45:Q94
2.- AM45:AQ94
3.- BM45:BQ94

estos datos estan en la misma posicion en todas las hojas (Dia 1.
al Dia 31).


< necesito,..., generar una nueva hoja, con
un listado de todos los movimientos desde el dia 1 al dia 31.
dentro de estos rangos, podrian haber menos datos


hay sobre todo una cosa que no me queda clara:

en las hojas de cada dia, el contenido de las celdas de una misma fila
(pej: M45:Q45 y/o- AM45:AQ45 y/o BM45:BQ45

¿corresponden a un mismo registro?

¿tienen algun tipo de concepto por columna o/y por fila?

¿corresponden a franjas horarias o similar?

¿como [en base a que criterios] quieres organizar los datos en la
lista de destino?

bueno, estas son algunas de las dudas que se me ocurren, posiblemente
ampliables con alguna mas, para poder buscar algun tipo de respuesta.
Sobre todo lo referido a la organizacion de los datos en la hoja
resumen

si te animas a comentarlos, al menos en lo que a mi se refiere, quizas
sea mas facil echarte un cable

un saludo
Ivan
Respuesta Responder a este mensaje
#2 mamo66
12/12/2007 - 20:49 | Informe spam
On 12 dic, 12:41, Ivan wrote:
hola,

> Tengo un Libro que tiene 31 hojas (Dia1, Dia2, Dia3etc),
> que cada una representa un dia del mes, en cada una de ellas tengo
> tres rangos con datos que corresponden a movimiento de tarjetas de
> credito, los rango son:

> 1.- M45:Q94
> 2.- AM45:AQ94
> 3.- BM45:BQ94

> estos datos estan en la misma posicion en todas las hojas (Dia 1.
> al Dia 31).

< necesito,..., generar una nueva hoja, con> un listado de todos los movimientos desde el dia 1 al dia 31.
> dentro de estos rangos, podrian haber menos datos

hay sobre todo una cosa que no me queda clara:

en las hojas de cada dia, el contenido de las celdas de una misma fila
(pej: M45:Q45 y/o- AM45:AQ45 y/o BM45:BQ45

¿corresponden a un mismo registro?

¿tienen algun tipo de concepto por columna o/y por fila?

¿corresponden a franjas horarias o similar?

¿como [en base a que criterios] quieres organizar los datos en la
lista de destino?

bueno, estas son algunas de las dudas que se me ocurren, posiblemente
ampliables con alguna mas, para poder buscar algun tipo de respuesta.
Sobre todo lo referido a la organizacion de los datos en la hoja
resumen

si te animas a comentarlos, al menos en lo que a mi se refiere, quizas
sea mas facil echarte un cable

un saludo
Ivan



Hola Ivan

Si por Ej.

Todos estos rango tienen las siguientes columnas

M45
Q45
N° Tarjeta Cod Descripcion Valor
00010201 1 Credito
15.000
00010202 1 Credito
5.000
00032120 2 Debito
4.000
00032121 2 Debito
10.000
11020202 3 Otras
20.000


AM45
AQ45
N° Tarjeta Cod Descripcion Valor
00010201 1 Credito
15.000
00032120 2 Debito
4.000
11020202 3 Otras
20.000

BM45
BQ45
N° Tarjeta Cod Descripcion Valor
00032120 2 Debito
4.000
00032121 2 Debito
10.000
11020202 3 Otras
20.000

Entonces estas deben quedar ordenadas en la hoja de destino

NOTA Importante, esta macro debo ejecutarla las dias 15 + - de cada
mes, entonces en la hoja de destino no me debe llevar los datos que ya
han sido cargados.

Gracias amigo


Gracias.
Respuesta Responder a este mensaje
#3 Ivan
13/12/2007 - 04:39 | Informe spam
hola Manuel,

la verdad es que no se si estare un poco espeso, pero creo que ahora
tengo aun mas dudas que antes:

1º) comentas que tienes 31 hojas, una por dia del mes

.- supongo que seran en unos casos 31, en otros 30 y en otros
28/29


2º) en la hoja de cada dia tienes

a.-> tres rangos separados pero que tienen la misma estructura de
datos: [Nº Tarjeta / Cod / Descripcion / Valor]

.-¿como quieres que sea la hoja/lista de destino? tambien con 3
rangos/listas separadas o en una sola lista con encabezados comunes?.

.-en cualquiera de los 2 casos ¿en que rango/s quieres que vaya/n
la/s lista/s

b.-> si tu ej. responde +/- a la realidad en estos 3 rangos pueden
darse registros exactamente iguales =>

' 10201 / 1 / Credito / 15.000 => se repite en 2 de los rangos
' 10202 / 1 / Credito / 5.000 => no se repite
' 32120 / 2 / Debito / 4.000 => se repite en los 3
' 32121 / 2 / Debito / 10.000 => se repite en 2
'11020202 / 3 / Otras / 20.000 => se repite en los 3

.-¿como quieres que se considere a estos registros repetidos?¿como
diferentes o como uno solo? pej. si el mismo registro esta en los 3
rangos ¿se cargaria 3 veces en la hoja de destino, o se cargaria solo
1?

3º) acabas diciendo=>

NOTA Importante, esta macro debo ejecutarla las dias 15 + - de cada
mes, entonces en la hoja de destino no me debe llevar los datos que ya
han sido cargados.





a) si la ejecutas +/- cada dia 15, supongo que cargas la ultima
quincena del mes anterior y la 1ª del mes en curso

.-¿es posible que una vez ejecutado el codigo vuelvan a modificarse
las hojas de dias anteriores, o sea las ya cargadas?

.-¿indicas el mes correspondiente en algun sitio o de alguna
forma?

.-¿tienes intencion de poner algun campo mas, pej indicando la
fecha a la que corresponden dichos registros?¿y/o algun nº/
identificador unico por registro?

.-¿se pueden borrar los datos de la hojas una vez cargados en el
resumen, digamos que como para empezar de cero? ¿o es que cada nuevo
mes vas añaiendo a cada dia los registro a acontinuacion de los ya
existentes?

..-en cuanto a los datos ya cargados o no, [creo que] las
posibilidades cambiarian mucho dependiendo de algunas de las cosas/
dudas comentadas mas arriba

bueno, de momento no me viene ninguna mas,peros eeguro que se me
escapan unas cuantas

siento no ser de gran ayuda

un saludo
Ivan

PD: si quieres comentas algunos mas de estos detalles
Respuesta Responder a este mensaje
#4 mamo66
13/12/2007 - 13:46 | Informe spam
On 12 dic, 23:39, Ivan wrote:
hola Manuel,

la verdad es que no se si estare un poco espeso, pero creo que ahora
tengo aun mas dudas que antes:

1º) comentas que tienes 31 hojas, una por dia del mes

.- supongo que seran en unos casos 31, en otros 30 y en otros
28/29


R: En el archivo tengo 31 hojas... fijas.

2º) en la hoja de cada dia tienes

a.-> tres rangos separados pero que tienen la misma estructura de
datos: [Nº Tarjeta / Cod / Descripcion / Valor]



R: Si, efectivamente

.-¿como quieres que sea la hoja/lista de destino? tambien con 3
rangos/listas separadas o en una sola lista con encabezados comunes?.



R: Una sola lista con emcabezados comunes

.-en cualquiera de los 2 casos ¿en que rango/s quieres que vaya/n
la/s lista/s



R: Desde la Celda A1 en adelante

b.-> si tu ej. responde +/- a la realidad en estos 3 rangos pueden
darse registros exactamente iguales =>

' 10201 / 1 / Credito / 15.000 => se repite en 2 de los rangos
' 10202 / 1 / Credito / 5.000 => no se repite
' 32120 / 2 / Debito / 4.000 => se repite en los 3
' 32121 / 2 / Debito / 10.000 => se repite en 2
'11020202 / 3 / Otras / 20.000 => se repite en los 3

.-¿como quieres que se considere a estos registros repetidos?¿como
diferentes o como uno solo? pej. si el mismo registro esta en los 3
rangos ¿se cargaria 3 veces en la hoja de destino, o se cargaria solo
1?



R: Si, se debe cargar 3 veces...

3º) acabas diciendo=>

>> NOTA Importante, esta macro debo ejecutarla las dias 15 + - de cada
>> mes, entonces en la hoja de destino no me debe llevar los datos que ya
>> han sido cargados.

a) si la ejecutas +/- cada dia 15, supongo que cargas la ultima
quincena del mes anterior y la 1ª del mes en curso



R: No, son los dias del mes en curso.

.-¿es posible que una vez ejecutado el codigo vuelvan a modificarse
las hojas de dias anteriores, o sea las ya cargadas?



R: No... eso es poco frecuente, y si pasa se modificaria manualmente
la hoja de Destino.

.-¿indicas el mes correspondiente en algun sitio o de alguna
forma?



R: En cada hoja tengo la fecha en esta posicion C2=Dia , D2=Mes,
E2=Año

.-¿tienes intencion de poner algun campo mas, pej indicando la
fecha a la que corresponden dichos registros?¿y/o algun nº/
identificador unico por registro?



R: Exacto, debo sacar la fecha de cada dia desde las celdas comentadas
anteriormente. entonces en la Hoja de destino debe incluir esta campo

.-¿se pueden borrar los datos de la hojas una vez cargados en el
resumen, digamos que como para empezar de cero? ¿o es que cada nuevo
mes vas añaiendo a cada dia los registro a acontinuacion de los ya
existentes?



R: Bueno, al llegar el dia 31, debo ejecutar otra macro que e limpia
las hojas y comienzo un nuevo mes...

..-en cuanto a los datos ya cargados o no, [creo que] las
posibilidades cambiarian mucho dependiendo de algunas de las cosas/
dudas comentadas mas arriba

bueno, de momento no me viene ninguna mas,peros eeguro que se me
escapan unas cuantas

siento no ser de gran ayuda

un saludo
Ivan

PD: si quieres comentas algunos mas de estos detalles



Hola Ivan..

Mira, estas planillas son de una estacion de Servicio, y en
las estaciones de servicio, existen 3 turnos. (Mañana, Tarde, Noche),
y en los 3, los atendedores reciben pagos de combustibles con Tarjetas
de Credito, por lo tanto, un Cliente puede pasar a cargar combustible
en la mañana (paga con Tarjeta Rango M45:Q94) y puede pasar en la
Tarde o bien en la noche, por lo tanto seria el mismo Nº de tarjeta,
entonces sí, efectivamente, se puede repetir en el dia, en mas de un
rango.
Cuando digo que no se repitan es; que si ejecuto la macro y me
lee los dias del 1 a 15, y despues el 30 la ejecuto nuevamente, tengo
dos opciones; o bien limpio toda la hoja de destino y cargo desde el
dia 1 al 30, o bien me carga desde el dia 16 en adelante a
continuación de lo que ya se cargo (dia 1 al 15).
En cuanto a la fecha, se me olvido informartelo, y gracias por
tu aclaración, tengo que sacarla de tres celdas en las cuales tengo en
una el Mes en Otra el dia y en otro Año.. C2=Dia , D2=Mes, E2=Año.
Entonces al leer la hoja llamada Dia 1, la macro debe colocar la fecha
que se encuentra en estos rango (C2=Dia , D2=Mes, E2=Año), a todas las
tarjetas de ese dia..al pasar por la Hoja Dia 2, debe colocar la fecha
de ese dia a todas las tarjetas de ese dia.

Gracias nuevamente
Respuesta Responder a este mensaje
#5 Ivan
15/12/2007 - 11:11 | Informe spam
hola Manuel,

disculpa la tardanza, pero ando liadillo

bueno, voy con prisa, pero si quieres prueba esto con copias:

supuestos:

a)la hoja resumen se llama "Resumen" y las de los dias "1","2","3",,"31"

b)en la hoja resumen pon en la 1ª fila los mismos titulos que tengas en los listado pero a partir de B1. En A1 pones
como titulo "Fechas" (o similar)

creo que si el resto es como yo te he entendido deberia valerte.

copia/pega en un modulo normal y llama a la macro "" cuando quieras actualizar

''--pega desde aqui
'
Function UltimoDiaCargado(rango As Range) As Byte
Dim maximo As Byte
On Error Resume Next
UltimoDiaCargado = _
IIf(Application.Max(rango) = 0, 0, Day(Application.Max(rango)))
End Function
Function UltimoDiaMes(mes As Byte, año As Integer) As Byte
Dim n As Integer, fch As Date
For n = 31 To 28 Step -1
On Error Resume Next
fch = DateValue(n & "/" & mes & "/" & año)
If Err.Number = 0 Then Exit For
On Error GoTo 0
Next
UltimoDiaMes = n
End Function
Sub CargarDias()
Dim n As Long, T As Long, ultD As Byte, ultDM As Byte, _
uF As Long, hj As Worksheet
Application.ScreenUpdating = False
With ThisWorkbook
Set hj = .Worksheets("Resumen")
With .Worksheets("1")
ultDM = UltimoDiaMes(.[d1], .[e1])
End With
ultD = UltimoDiaCargado(hj.Range(hj.Range("a2"), _
hj.[a65536].End(xlUp).Offset(1)))
If ultD = 0 Then
ultD = 1
Else
hj.[a1].CurrentRegion.Sort key1:=hj.[a2], _
order1:=xlAscending, header:=xlYes
For n = hj.[a65536].End(xlUp).Row To 2 Step -1
If Day(hj.Cells(n, 1)) = ultD Then _
hj.Rows(n).Delete Else Exit For
Next
End If
For n = ultD To ultDM
With .Worksheets(CStr(n))
uF = hj.[a65536].End(xlUp).Row + 1
hj.Range("a" & uF) = CLng(CDate(.[c1] & "/" & _
.[d1] & "/" & .[e1]))
.Range("m45:q94").Copy hj.[b65536].End(xlUp).Offset(1)
.Range("am45:aq94").Copy hj.[b65536].End(xlUp).Offset(1)
.Range("bm45:bq94").Copy hj.[b65536].End(xlUp).Offset(1)
hj.Cells(uF, 1).AutoFill hj.Range(hj.Cells(uF, 1), _
hj.Range("a" & hj.[b65536] _
.End(xlUp).Row)), xlFillCopy
End With
Next
hj.Columns.AutoFit: .Save
End With
Set hj = Nothing
End Sub
''
'-pega hasta aqui

no se si saldra muy chapuza, y atmpoco esta probada con todos tus 'posibles', pero creo que no va mal

si cualquier cosa si quieres comentas

un saludo
Ivan

"mamo66" escribió en el mensaje
news:
On 12 dic, 23:39, Ivan wrote:
hola Manuel,

la verdad es que no se si estare un poco espeso, pero creo que ahora
tengo aun mas dudas que antes:

1º) comentas que tienes 31 hojas, una por dia del mes

.- supongo que seran en unos casos 31, en otros 30 y en otros
28/29


R: En el archivo tengo 31 hojas... fijas.

2º) en la hoja de cada dia tienes

a.-> tres rangos separados pero que tienen la misma estructura de
datos: [Nº Tarjeta / Cod / Descripcion / Valor]



R: Si, efectivamente

.-¿como quieres que sea la hoja/lista de destino? tambien con 3
rangos/listas separadas o en una sola lista con encabezados comunes?.



R: Una sola lista con emcabezados comunes

.-en cualquiera de los 2 casos ¿en que rango/s quieres que vaya/n
la/s lista/s



R: Desde la Celda A1 en adelante

b.-> si tu ej. responde +/- a la realidad en estos 3 rangos pueden
darse registros exactamente iguales =>

' 10201 / 1 / Credito / 15.000 => se repite en 2 de los rangos
' 10202 / 1 / Credito / 5.000 => no se repite
' 32120 / 2 / Debito / 4.000 => se repite en los 3
' 32121 / 2 / Debito / 10.000 => se repite en 2
'11020202 / 3 / Otras / 20.000 => se repite en los 3

.-¿como quieres que se considere a estos registros repetidos?¿como
diferentes o como uno solo? pej. si el mismo registro esta en los 3
rangos ¿se cargaria 3 veces en la hoja de destino, o se cargaria solo
1?



R: Si, se debe cargar 3 veces...

3º) acabas diciendo=>

>> NOTA Importante, esta macro debo ejecutarla las dias 15 + - de cada
>> mes, entonces en la hoja de destino no me debe llevar los datos que ya
>> han sido cargados.

a) si la ejecutas +/- cada dia 15, supongo que cargas la ultima
quincena del mes anterior y la 1ª del mes en curso



R: No, son los dias del mes en curso.

.-¿es posible que una vez ejecutado el codigo vuelvan a modificarse
las hojas de dias anteriores, o sea las ya cargadas?



R: No... eso es poco frecuente, y si pasa se modificaria manualmente
la hoja de Destino.

.-¿indicas el mes correspondiente en algun sitio o de alguna
forma?



R: En cada hoja tengo la fecha en esta posicion C2=Dia , D2=Mes,
E2=Año

.-¿tienes intencion de poner algun campo mas, pej indicando la
fecha a la que corresponden dichos registros?¿y/o algun nº/
identificador unico por registro?



R: Exacto, debo sacar la fecha de cada dia desde las celdas comentadas
anteriormente. entonces en la Hoja de destino debe incluir esta campo

.-¿se pueden borrar los datos de la hojas una vez cargados en el
resumen, digamos que como para empezar de cero? ¿o es que cada nuevo
mes vas añaiendo a cada dia los registro a acontinuacion de los ya
existentes?



R: Bueno, al llegar el dia 31, debo ejecutar otra macro que e limpia
las hojas y comienzo un nuevo mes...

..-en cuanto a los datos ya cargados o no, [creo que] las
posibilidades cambiarian mucho dependiendo de algunas de las cosas/
dudas comentadas mas arriba

bueno, de momento no me viene ninguna mas,peros eeguro que se me
escapan unas cuantas

siento no ser de gran ayuda

un saludo
Ivan

PD: si quieres comentas algunos mas de estos detalles



Hola Ivan..

Mira, estas planillas son de una estacion de Servicio, y en
las estaciones de servicio, existen 3 turnos. (Mañana, Tarde, Noche),
y en los 3, los atendedores reciben pagos de combustibles con Tarjetas
de Credito, por lo tanto, un Cliente puede pasar a cargar combustible
en la mañana (paga con Tarjeta Rango M45:Q94) y puede pasar en la
Tarde o bien en la noche, por lo tanto seria el mismo Nº de tarjeta,
entonces sí, efectivamente, se puede repetir en el dia, en mas de un
rango.
Cuando digo que no se repitan es; que si ejecuto la macro y me
lee los dias del 1 a 15, y despues el 30 la ejecuto nuevamente, tengo
dos opciones; o bien limpio toda la hoja de destino y cargo desde el
dia 1 al 30, o bien me carga desde el dia 16 en adelante a
continuación de lo que ya se cargo (dia 1 al 15).
En cuanto a la fecha, se me olvido informartelo, y gracias por
tu aclaración, tengo que sacarla de tres celdas en las cuales tengo en
una el Mes en Otra el dia y en otro Año.. C2=Dia , D2=Mes, E2=Año.
Entonces al leer la hoja llamada Dia 1, la macro debe colocar la fecha
que se encuentra en estos rango (C2=Dia , D2=Mes, E2=Año), a todas las
tarjetas de ese dia..al pasar por la Hoja Dia 2, debe colocar la fecha
de ese dia a todas las tarjetas de ese dia.

Gracias nuevamente
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida