intergracion de datos con macros

18/09/2008 - 06:44 por johairomo | Informe spam
Saludos amigos del grupo

Ha sido de gran valor los recuersos he ido utilizando de forma
autodidacta los ejemplos mque ustedes describen en este grupo
infinitas gracias

pero me devastado el cerbro tratando de genrar una macro que se lo mas
sencilla, FLEXIBLE Y SOBRE TODO AGIL y que sea rapida para integrar la
informacion que describire a continuacion

1. tengo un cuadro que me envian asi

Columna
A B C D E
F G H I J K
L M
C_33 C_39 C_39_1 C_39_2 C39_3 C_43 C_43_1 C_43_2 C43_3
C44 C_44_1 C_44_2 C44_3

350 112 75 307 485 0 0 0 0 0 0 0 0
350 112 75 307 485 26000 0 0 26000 0 0 0 0
350 112 75 307 485 894000 156000 0 1050000 0 0 0 0
210 432 199 149 198 0 0 0 0 0 0 0 39000
350 112 75 307 485 2546000 0 0 2546000 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
350 112 75 307 485 27000 0 0 27000 0 0 0 0
210 432 199 149 198 462000 0 0 0 0 0 0 0
350 112 75 307 485 967000 85000 0 1052000 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
110 432 199 149 198 0 0 0 0 0 0 29837000 184000
350 112 75 307 485 5000 0 0 5000 0 0 0 0
300 432 434 427 447 3161000 3161000 0 0 0 0 0 0
210 432 199 149 198 0 0 0 0 36904000 0 0 36567000
300 432 434 427 447 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 25000 0 0 25000 0 0
210 432 199 149 198 234000 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
210 432 199 149 198 1584000 0 0 0 0 0 0 0
210 432 199 149 198 0 0 0 120000 0 0 0 0
300 432 434 427 447 449000 140000 197000 0 0 0 0 112000
350 112 75 307 485 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 35000 0 35000
300 432 434 427 447 0 0 74000 0 0 74000 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 1677000 0 1677000
300 432 434 427 447 2668000 0 2668000 0 0 0 0 0
300 432 434 427 447 66000 0 66000 0 0 0 0 0
300 432 434 427 447 1632000 0 0 0 0 40000 0 1672000
350 112 75 307 485 240000 0 0 240000 0 0 0 0
350 112 75 307 485 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0

la casilla 33 no tine sino una sola columna
las casilla 39 va desde la casilla 39 hasta la casilla 39_12 (Cada
columna con Datos de referencia en Cifras ; 15000 filas)
las casilla 43 va desde la casilla 43 hasta la casilla 43_12 (Cada
columna con Valores en Cifras ; 15000 filas)
las casilla 44 va desde la casilla 44 hasta la casilla 44_12 (Cada
columna con Valores en Cifras ; 15000 filas)

lo que se busac es establecer la sumatoria de los valores de las
casillas 43 y de las 44 por cada relacion entre
de cada datos de la casilla 33 en cada columna de cada casilla 39


algo asi



C_33 C_39 C_43 C_44
350 112 3.769.432.836 0
350 75 1.273.438.865 0
350 307 1.727.990.297 0
350 485 6.748.520.998 600.000
350 498 1.511.973.000 0
350 201 8.260.538.998 600.000
210 432 420.402.000 100.533.000
210 199 14.163.000 131.726.535
210 149 0 88.492.233
210 198 351.136.014 228.606.474
210 433 36.753.000 43.383.000
210 378 123.974.474 0
210 498 114.832.000 210.000
210 445 178.930.474 0
210 446 0 332.433.754
300 432 6.068.202.285 2.131.511.453
300 434 3.034.758.223 4.888.154.728
300 427 4.536.245.918 266.346.392
300 447 36.475.000 1.794.571.811
300 149 400.313.970 4.936.707.268
300 496 937.195.214 640.197.991
300 378 2.924.898.140 1.383.000
300 498 757.413.100 1.050.000
300 445 3.172.175.540 0
300 446 0 7.816.918.872
110 432 608.764.000 29.467.000
110 199 4.895.000 8.600.000
110 149 26.000.000 69.992.000
110 198 151.165.000 86.089.000
110 433 40.366.000 7.232.000
110 378 387.532.000 0
110 498 68.272.000 0
110 445 437.281.000 0
110 446 0 219.227.000
420 170 1.651.852.000 51.459.000
420 498 179.333.000 0

lo he intentado filtrando y es demasiado largo y no logro cordinarla
con matrices no la logro entenderla y la macro que hice es la
siguiente pero repite datos y no logro decifrarla cual es el error

Sub Agrupar()
Dim C_1, C_2, C_3, R, Rx, I, Dat, Dat1, Val1, Val2, Rng, Rng1 'Dat,
Dx, D2, C_1, C_2, C_3, Nom, R1, P, Px

Range("A1").Select
Application.ScreenUpdating = False

ActiveSheet.Copy Before:=Sheets(1)
ActiveSheet.Name = "DATOS"

Range("A1").Select
Application.ScreenUpdating = False

C_1 = Cells.Find(What:="CASILLA33").Column
C_2 = Cells.Find(What:="CASILLA43").Column
C_3 = Cells.Find(What:="CASILLA44").Column

R = Range("e65536").End(xlUp).Row

Range(Cells(1, C_1), Cells(R, C_1 + 11)).AdvancedFilter
Action:=xlFilterCopy, CopyToRange:=Range("BG1"), Unique:=True
Rx = Range("BG65530").End(xlUp).Row

Range("C" & R).Offset(3, 0) = "C_33"
Range("D" & R).Offset(3, 0) = "C_39"
Range("E" & R).Offset(3, 0) = "C_43"
Range("F" & R).Offset(3, 0) = "C_44"

For Each Dat In Range("BG2:BG" & Rx)
For I = 0 To 9
Dat1 = Dat.Offset(0, I + 1)
If Not IsEmpty(Dat1) Then
Val1 = Application.SumIf(Range(Cells(2, C_1), Cells(R, C_1)), Dat,
Range(Cells(2, C_2 + I), Cells(R, C_2 + I)))
Val2 = Application.SumIf(Range(Cells(2, C_1), Cells(R, C_1)),
Dat, Range(Cells(2, C_3 + I), Cells(R, C_3 + I)))
If Val1 <> 0 Or Val2 <> 0 Then
Range("C65530").End(xlUp).Offset(1, 0) = Dat
Range("D65530").End(xlUp).Offset(1, 0) = Dat1
Range("E65530").End(xlUp).Offset(1, 0) = Val1
Range("F65530").End(xlUp).Offset(1, 0) = Val2
End If
End If
Next I
Next Dat


Range("C" & R).Offset(3, 0).CurrentRegion.NumberFormat = "#,##0"

Range("C:F").Columns.AutoFit
Application.ScreenUpdating = True
Range("C" & R).Offset(3, 0).Select
MsgBox ("PROCESO TERMINADO SATISFACTORIAMENTE")

End Sub


Perdonen por lo largo del enunciado pero es para darme a entender y de
ante mano gracias por la ayuda que me puedan bindar,

no podido dormir tratando de hacerla por que cada libro es la
informacion que hay que agrupar y no he dado con el chiste

john moreno
un Amigo colombiano

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/09/2008 - 06:35 | Informe spam
hola, !

(creo que) a pesar de que expusiste "suficientes" detalles/ejemplos/...
ninguno sirve para formar el criterio de lo que pretendes resolver :-((

- no se puede "armar" una tabla con los resultados esperados que expones...
porque los datos de la tabla "de base" no permiten dilucidar las condiciones
(p.e. donde se pueda comprobar el por que del resumen que expusiste)

- no resulta claro si la combinacion de comparaciones debe buscarse (p.e.)...
en ubicaciones "precisas/similares"... o donde quiera que se encuentren -???-

prueba con menos datos (simulando una tabla en hoja de calculo)...
y comenta de preferencia rangos y condiciones (de preferencia, +/- exactamente)

saudos,
hector.
Respuesta Responder a este mensaje
#2 johairomo
20/09/2008 - 16:18 | Informe spam
On 19 sep, 23:35, "Héctor Miguel"
wrote:
hola, !

(creo que) a pesar de que expusiste "suficientes" detalles/ejemplos/...
ninguno sirve para formar el criterio de lo que pretendes resolver    :-((

- no se puede "armar" una tabla con los resultados esperados que expones...
  porque los datos de la tabla "de base" no permiten dilucidar las condiciones
  (p.e. donde se pueda comprobar el por que del resumen que expusiste)

- no resulta claro si la combinacion de comparaciones debe buscarse (p.e.)...
  en ubicaciones "precisas/similares"... o donde quiera que se encuentren    -???-

prueba con menos datos (simulando una tabla en hoja de calculo)...
y comenta de preferencia rangos y condiciones (de preferencia, +/- exactamente)

saudos,
hector.



Hoal Amigos Gracias por su respuesta y saludos de amistad

bueno en cuanto a la situacion la comentare de la siguiente forma

hay cuatro grupos de datos casilla 33, casilla 39, casilla43 y casilla
44

para todas las casillas a excepcion de la casilla 33que es una sola
columna las demas constan de de 10 columnas

tadas las casillas todas son numericas

la casilla 39 y 33 son de referencia y las 43 y 44 son de valores

hay que establecer

1 - datos unicos de cada de la relacion casilla 33 y casilla 39 o
sea que como la casilla 33 es una sola se repetira tantas veces como
columnas de la 39 se tengan



C_33 C_39 C_39_1 C_39_2 C39_3 C_43 C_43_1 C_43_2 C43_3
C44 C_44_1 C_44_2 C44_3


350 112 75 307 485 26000 156000 0
26000 27000 10500 0 0
350 112 75 307 485 894000 156000 0
1050000 0 0 0 0
210 432 199 149 198 0 0
0 0 0 0 0 39000
350 112 75 307 485 2546000 0 0
2546000 0 0 0 0
300 432 434 427 447 0 0
0 0 0 0 0 0
300 432 434 427 447 0 0
0 0 0 0 0 0
350 112 75 307 485 27000 0 0
27000 0 0 0 0
210 432 199 149 198 462000 0 0
0 0 0 0 0
350 112 75 307 485 967000 85000 0
1052000 0 0 0 0
300 432 434 427 447 0 0
0 0 0 0 0 0 0

se busca es que la columna de casilla se repita tantas veces veces
colo columnas de 39 hayan si hay 10 columnas de 39 39-1, 39-2 .se
repetira en ese mismo sentido

y la referencia 350 sera con 112, luego 350 con 75, 350 con 307 y 350
con 485 estas son las relaciones y los acumlados son

para relacion 350 -112 el valores es 112.000 estos son de la columna
casilla 43 y 27000 de la columna casilla 44
para la realcion 350 - 75 de la relacion columna casilla 33 - 39_1 es
el valor 156.000 de la columna casilla 43_1 y el valor 10.500 de la
columna casilla 44_1
y asi sucecivamente y se acumulan los valores de las columnas
casillas 43 y de la 44 , por cada relacion tantas veces como se
repitan en la columna 33 - 39

en la primeras relaciones esta

350-112, 210-432, 300-432 y de la siguiente columna 350 - 75,
210-199, 300 -434, de la siguiente columna 350-307,
210-149, 300- 427 y asi sucesivamnte y los valores lo mismo y son
acumulativos tantas veces como se repitan en la colomunas para cada
columna con sus respectivos valoes delas columans 43 y 44


bueno repito gracias de antemano de nuevo y por prestame
atencion

para 350
Respuesta Responder a este mensaje
#3 Héctor Miguel
20/09/2008 - 18:20 | Informe spam
hola (de nuevo), !

1) pones un primer ejemplo relacionado con una de las combinaciones en la tabla que expones:
"> y los acumlados son para relacion 350 -112 el valores es 112.000... de la... casilla 43 y 27000 de la... casilla 44"
PERO...
a) en la tabla de ejemplo NO existe el valor 112000 (casilla 43) para la combinacion 350-112 -???-
b) en tu relacion hay mas "combinaciones" 350 - 112 => que pasa con ellas ?... donde y/o como "se acumulan" ???

2) el caso de la combinacion 350-75 si coincide (156000 de... 43_1 y 10.500 de... 44_1)
PERO...
en tu relacion hay mas "combinaciones" 350 - 75 => que pasa con ellas ?... donde y/o como "se acumulan" ???

3) se podria asumir/entender/... que la acumulacion ocurre SOLO en la columna "pareja/simiar/espejo/..."
del segundo numero de la combinacion (es decir si esta en C_39_5 se suman solo los valores de C_43_3 y/o C_44_3)

(creo que) aun hay algunos detalles "en el tintero"... no se si alguien ya hubiera descifrado este (aparente ?) enredo -?-
(me esperare a que alguien consiga mayor lucidez para interpretar tu exposicion) ;)

saludos,
hector.

__ OP __
... en cuanto a la situacion la comentare de la siguiente forma
hay cuatro grupos de datos casilla 33, casilla 39, casilla 43 y casilla 44
para todas las casillas a excepcion de la casilla 33 que es una sola columna las demas constan de de 10 columnas
... las casillas todas son numericas
la casilla 39 y 33 son de referencia y las 43 y 44 son de valores
hay que establecer
1 - datos unicos de cada de la relacion casilla 33 y casilla 39 o sea que
como la casilla 33 es una sola se repetira tantas veces como columnas de la 39 se tengan



__ la "simulacion" de tabla __
C_33 C_39 C_39_1 C_39_2 C39_3 C_43 C_43_1 C_43_2 C43_3 C44 C_44_1 C_44_2 C44_3
350 112 75 307 485 26000 156000 0 26000 27000 10500 0 0
350 112 75 307 485 894000 156000 0 1050000 0 0 0 0
210 432 199 149 198 0 0 0 0 0 0 0 39000
350 112 75 307 485 2546000 0 0 2546000 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0
350 112 75 307 485 27000 0 0 27000 0 0 0 0
210 432 199 149 198 462000 0 0 0 0 0 0 0
350 112 75 307 485 967000 85000 0 1052000 0 0 0 0
300 432 434 427 447 0 0 0 0 0 0 0 0 0

se busca que la columna de casilla se repita tantas veces veces colo columnas de 39 hayan
si hay 10 columnas de 39 39-1, 39-2 .se repetira en ese mismo sentido
y la referencia 350 sera con 112, luego 350 con 75, 350 con 307 y 350 con 485 estas son las relaciones

y los acumlados son para relacion 350 -112 el valores es 112.000... de la columna casilla 43 y 27000 de la columna casilla 44

para la realcion 350-75 de la relacion columna casilla 33 - 39_1
es el valor 156.000 de la columna casilla 43_1 y el valor 10.500 de la columna casilla 44_1
y asi sucecivamente y se acumulan los valores de las columnas casillas 43 y de la 44
por cada relacion tantas veces como se repitan en la columna 33 - 39

en la primeras relaciones esta
350-112, 210-432, 300-432 y de la siguiente columna 350-75, 210-199, 300-434
de la siguiente columna 350-307, 210-149, 300-427 y asi sucesivamnte
y los valores lo mismo y son acumulativos tantas veces como se repitan en la colomunas
para cada columna con sus respectivos valoes delas columans 43 y 44
Respuesta Responder a este mensaje
#4 Héctor Miguel
20/09/2008 - 18:27 | Informe spam
hola (de nuevo), !

antes de que continues con este "tipo" de exposiciones...

cuando tengas un tiempecito disponible, da una vuelta por esta pagina:
- aqui puedes encontrar algunos "tips" de como se debiera postear en los grupos de noticias...
-> Hints And Tips For New Posters In The Excel Newsgroups
http://www.cpearson.com/Excel/newposte.htm
tratando de NO omitir el comentario y el enlace del punto 9 (adjuntos en los mensajes)
-> http://www.cpearson.com/Excel/Attachments.htm

-> o... si le tienes "flojerilla" al ingles... me he permitido hacer una (modesta) traduccion...
que puedes visitar en: -> http://excel4all.spaces.live.com/

-> aqui tienes otras paginas con "sugerencias" a la hora de plantear consultas en foros publicos:
How to ask a question
http://support.microsoft.com/kb/555375/en-us
Como hacer una pregunta
http://support.microsoft.com/kb/555375/es
Como hacer preguntas de manera inteligente
http://www.sindominio.net/ayuda/pre...entes.html

(probablemente) entenderas algunas de mis respuestas a este tipo de consultas :D

saludos,
hector.
Respuesta Responder a este mensaje
#5 Héctor Miguel
20/09/2008 - 19:37 | Informe spam
hola (otra vez), !

estas consultando desde la interfase de google-grupos, y si te adjuntara un archivo de ejemplo...
podrias descargarlo por outlook-express (pero no creo que desde la interfase con google) -?-
ademas de que seria un "abuso" para el resto de los usuarios ;)

a que direccion te envio un ejemplo ? (basado en "la tabla" de base de tu consulta original)
solo que la tabla de "resumen" es al estilo tabla-dinamica y los resultados son "lo que hay"
(ni siquiera se parece al resumen que exponias en tu primera consulta)

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida