border
VB 6
 
 
/

Retroceder   VB-MUNDO - Visual Basic, y mucho mas > Programacion > VBA (Excel, Word, Outlook, Access)
Olvidó Password? Registrarse!
Registrarse FAQDonate Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

El Mejor Hosting .NET Framework 4.0

En VB-MUNDO usamos el increible servicio de SmarterASP

Respuesta
 
LinkBack Herramientas
  #1 (permalink)  
Antiguo 04-12-2006, 16:21:40
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado ¿Como colocar formula que sume columnas no fijas?

Estimados todos:

Estoy generando una macro que me ayuda a reorganizar un reporte y me
encontre con un problema, ojala que me puedan ayudar.


El cuadro de excel tiene mas o menos esta forma


dato1 dato2 dato3 Total1 dato4 Total2
12 34 45 45 43 455
23 245 458 34 567 345
45 34 444 456 678 455
45 67 45 345 779 456
56 45 458 678 456 555
32 34 22 33 44 345
24 12 99 333 234 1125


Esta información no siempre aparece asi, por cuestiones del mercado a
veces tengo mas columnas o menos columnas DATO, por lo que las columnas
TOTAL1 y TOTAL2, nunca aparecen en la misma columna.


Aqui lo que falta es un TOTAL1B que sume los valores de DATO1 y DATO2.
y que se coloque atras de TOTAL1 ¿porque no lo hace el reporteador?
porque esos DATO son del mismo grupo, especie y categoria, pero los
jefes quieren ese total ahi. En fin.


Ok, usando una macro ya logre meter una columna en blanco entre TOTAL1
y DATO4, no importa que TOTAL1 no este siempre en la misma posicion,
eso fue facil. ¿porque use una macro? porque tengo que editar 25
reportes como este. jijijiji. la macro que hice abre los archivos, los
edita y los cierra en un santiamen. A mano me tardo 1 hora, con la
macro solo 5 mins.


El problema fue al querer meter una formula desde la misma macro para
sumar DATO1 y DATO2 porque estas dos columnas !tampoco tienen la misma
posición siempre!. Aparte, no se que estoy haciendo mal porque no
puedo crear la formula desde la macro.


Ya trate utilizando formato R1L1, la sintaxis normal de las coordenadas
y nada.


Por favor, ¿podrian ayudarme?. por fa, por fa, antes de molestarles ya
estuve dos dias completos buscando soluciones viables, es por eso que
recurro a ustedes...por fa, ayuda.


saludos cordiales
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2 (permalink)  
Antiguo 07-12-2006, 01:39:05
Nuevo Amigo
 
Registrado: oct 2006
Posts: 4
Créditos: 20
mitimae Valoración +2
Predeterminado

disculpa si quieres te puedo ayudar pero no entendi mucho
lo q deseas
es q te sume dos cantidades de columnas celda por celda? y q vaya arrojando el resultado a su lado como un total ?

pero el total 2 b o algo asi no entendi muxo......

pedrias explicarmelo mejor,aca o por pm si deseas :P
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3 (permalink)  
Antiguo 07-12-2006, 15:01:19
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado

Gracias por tu ayuda. Lo explico de nuevo.

Necesito colocar mediante una macro, una formula en una columna, que sume los totales de la columna "x" y la columna "y". El punto aqui es que los totales que deben aparecer en la columna "x" y la columna "y", no siempre estaran en la columna "x" o "y".

¿porque pasa esto?, hay un grupo de datos que aparecen de la columna "a" a la columna "e" por ejemplo, entonces el total que suma esas columnas aparecerá en la columna "f" ¿correcto?. Cada mes la información aumenta o disminuye; entonces, para un mes voy a tener datos de la columna "a" a la "e" con totales en "f" y para otro mes voy a tener datos de la columna "a" a la "m" y el total aparecera en "n".

Ahora bien, son dos grupos de estos datos que incrementan o disminuyen. Entonces lo que necesito es saber como colocar una formula en alguna parte que sume las dos columnas de totales, pero primero necesito saber como ubicar las columnas que quiero sumar.

A lo mejor lo que confunde es esto. ¿porque quiero la formula? porque necesito sacar totales de los valores de las dos columnas LINEA POR LINEA. Es decir, necesito sacar el total de la suma de la columna de totales "a" mas la "b" y poner el valor en "c", de la linea 1,2,3,4.....etc hasta el final del cuadro.

Espero haberme explicado mejor.

saludos y gracias
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4 (permalink)  
Antiguo 07-12-2006, 16:28:19
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.481
J_M_Movilla ha deshabilitado la reputación
Predeterminado

No creas que es fácil entender lo que quieres decir. Sobre todo si vemos el ejemplo que nos pones para que te comprendamos...

Copio de tu primer mensaje los datos que facilitas para facilitar la comprensión de lo que quieres: Tres columnas de Datos seguidos de una columna que sea Suma de dato1 + dato2 + dato3... Y resulta que Total1... NI SE PARECE A ESO QUE QUIERES... Por eso nos estás volviendo chirivitas... al menos a mí...

Haz el favor de aclararnos dónde está el problema, ahora que los datos están presentados de forma que podemos entenderlos.
Código:
dato1 dato2 dato3 | Total1 |     dato4 | Total2 |
                  |        |           |        |
   12    34    45 |     45 |        43 |    455 |
   23   245   458 |     34 |       567 |    345 |
   45    34   444 |    456 |       678 |    455 |
   45    67    45 |    345 |       779 |    456 |
   56    45   458 |    678 |       456 |    555 |
   32    34    22 |     33 |        44 |    345 |
   24    12    99 |    333 |       234 |   1125 |
Copia este mismo cuadro y modifica las cantidades que están puestas al buen tuntún; o sea, para despistar... a ver si conseguimos enterarnos todos y alguien puede echarte una mano.
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5 (permalink)  
Antiguo 08-12-2006, 15:17:02
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado

Gracias JM MOVILLA por tu paciencia.

Si, de acuerdo. En las columnas solo puse valores al azar, porque en realidad los valores no son relevantes. Lo relevante es poder colocar en el primer renglon, a la derecha de TOTAL2, una formula que sume TOTAL1 y TOTAL2 y poder copiarla hacia abajo para totalizar el resto de los renglones.

El otro punto relevante es que, antes de TOTAL1, las columnas de DATO no siempre van a ser tres, un mes serán 4, otro mes 13, otro mes 20, otro mes solo 2, y asi. Lo mismo para TOTAL2, sus propias columnas DATO varian.

Entonces, primero debo localizar donde esta la columna TOTAL1 y donde esta la columna TOTAL2 para luego poder colocar la formula que las sume.

Ya logre un metodo para localizar la posicion de las columnas TOTAL1 y TOTAL2, mi problema es que en la MACRO no me deja colocar una formula.

Al localizar la posicion de las columnas guardo la posicion en una variable asi:
COL1 = ActiveCell.Address

Entonces, tengo dos variables COL1 y COL2, con las posiciones de las columnas. Me voy hasta el final del cuadro con esta instruccion:
Selection.End(xlToRight).Select

y me muevo una columna a la derecha para tener una celda vacia:
ActiveCell.Offset(0, 1).Select

Activo la celda para tener el control:
Range(ActiveCell.Address).Select

Y trato de crear la formula ahi:
ActiveCell.Value = "="+COL1+"+"+COL2

Pero como no estoy haciendo referencia a una posicion absoluta como "A1" o "A34", no me lo acepta. Las posciones absolutas para crear una formula solo se puede hacer estando escribiendo la formula a mano.


Tal vez se pregunten, ¿porque no simplemente hago que el reporteador totalize esas columnas?, me extendería mucho en explicar el porque, lo que si puedo decir rápido es que son datos de la misma categoria y tipo y estas columnas de TOTALES son un extracto de 70 columnas de totales, de las cuales solo esas dos me interesa sacar un subtotal.

Ojala que no los canse con tanta explicacion, saludos a todos y muchas gracias
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6 (permalink)  
Antiguo 08-12-2006, 15:23:37
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado

Gracias otra vez.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7 (permalink)  
Antiguo 08-12-2006, 15:57:47
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado un tipo de solucion

Estimado JM MOVILLA.

He encontrado un metodo para solucionar el problema, lo comparto con ustedes por si les es de utilidad.

Ok, como habia explicado, debo sumar los totales de TOTAL1 y TOTAL2 renglon por renglon, pero las posiciones de TOTAL1 y 2 nunca son las mismas porque las columnas de DATO siempre varian. Entonces encontre esta solucion:

Primero localizo en que columna estan TOTAL1 y 2, con este grupo de instrucciones:
Rows("6:6").Select
Selection.Find(What:="TOTAL1", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Select
col1 = ActiveCell.Column
ren1 = ActiveCell.Row


Rows("6:6").Select
Selection.Find(What:="TOTAL2", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Select
col2 = ActiveCell.Column
ren2 = ActiveCell.Row


Como verán primero seleccione la linea completa donde están los titulos, esto para evitar que la busqueda ande por toda la hoja y reducir tiempos. Luego, baje un reglon para tener la posicion de los datos, no del titulo. Por ultimo guarde en una variable la columna y en otra el renglón, utilizando la notación (R,C) o R1C1 y no la de posiciones absolutas como "A1". Haciendo esto la celda "A1" equivale a Cells(1,1). Esto me beneficia porque con el comando CELLS puedo controlar columna y renglon de manera independiente.

Bien, localizadas las columnas de totales y del renglon de su primer valor que estan guardados en col1,ren1 y col2,ren2; ya solo me resta colocar la formula en una columna a la derecha de TOTAL2.

Ojo, esta ultima instruccion activa la celda donde se encuentre el cursor en ese momento, de otro modo no van a poder escribir nada en ella. Programando esta instruccion es muy util porque el codigo de la macro "no sabe" en donde esta exactamente pero con esta instruccion tomas control de la celda en donde estes.


OJO. Yo no pude encontrar como escribir una formula en una celda desde la macro pero nada impide hacer la operacion con los valores que se encuentren en dos celdas y colocar el total en una tercera.

Me muevo al final a la derecha del cuadro y guardo la referencia de renglon y columna incrementando la columna en 1 para uso posterior, porque ahi colocare el total de la suma de las columnas:
Selection.End(xltoRigth).Select
rentot=ActiveCell.Row
coltot=ActiveCell.Column
coltot=coltot+1


Luego, me voy al final hasta abajo para conocer donde termina el cuadro y guardo la referencia del renglon que es la que me interesa y regreso de nuevo arriba:
Selection.End(xlDown).Select
renfi = ActiveCell.Row
Selection.End(xlUp).Select


Al localizar las posiciones de las columas TOTAL1 y TOTAL2 tambien tome la posicion del renglon donde empezaban los valores, por lo tanto, en ren1 y ren2 se donde inician los renglones de valores y en renfi se donde terminan los renglones de valores. Ya solo queda hacer un cliclo que los recorra sumando y colocando el resultado de cada renglo al final a la derecha del cuadro, asi:

For xx = yy To renfi
Cells(rentot, coltot).Value = Cells(ren1, col1).Value + Cells(ren2, col2).Value
rentot = rentot + 1
ren1 = ren1 + 1
ren2 = ren3 + 1
ren3 = ren3 + 1
ren7 = ren7 + 1
Next
Range("A1").Select


Este ciclo FOR recorre los renglones uno a uno sumando los valores de las columnas TOTAL1 y 2 y colocando el resultado en la columna a la derecha de TOTAL2

Esta es una solucion que encontre después de mucho batallar. Lo que NUNCA me quedo claro es si es posible ESCRIBIR formulas en una celda desde una MACRO.

¿Que te parece la solución JM MOVILLA? ¿Habra algun modo de hacerlo mas sencillo?

saludos cordiales
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #8 (permalink)  
Antiguo 08-12-2006, 20:57:51
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.481
J_M_Movilla ha deshabilitado la reputación
Predeterminado

Uy, uy... me pierdo con todo ese código. A mí se me ocurriría definir en la celda de COL1 una fórmula tal que
Código:
ExcelWorksheet.Cells(nFil, COL1).FormulaR1C1 = "=SUM(A" & Trim(Str(nFil)) & ":" & Asc(COL1 + 64) &  Trim(Str(nFil)) )"
donde nFil es el número de la fila, que irás incrementando de una en una.

Asegúrate de que Asc(COL1 + 64) se corresponde con la letra de la columna COL1. Tendrás que usar una variable en la que evalúes si esa letra es mayor que "Z" para convertirla a "AA", "AB", etc...
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #9 (permalink)  
Antiguo 08-12-2006, 21:04:06
Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
Créditos: 151
wontolla Valoración +2
Predeterminado

Esa formula se ve interesante. La voy a probar a ver si funciona.

Gracias y saludos
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #10 (permalink)  
Antiguo 08-12-2006, 21:28:12
Avatar de J_M_Movilla
Administrador
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 9.413
Créditos: 78.481
J_M_Movilla ha deshabilitado la reputación
Predeterminado

Puedo garantizarte que funciona. Ya te adelanto que tienes que hacer esos pequeños retoques para que después de "Z" venga "AA"; pero funciona perfectamente en varias aplicaciones mías...
__________________
José María Movilla Cuadrado
______________________
Normas del foro
www.foro.vb-mundo.com
www.vb-mundo.com
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Como colocar una pass en la base de datos??? afede19 Visual Basic 6.00 1 18-01-2008 11:24:06
Cómo formatear las columnas de un DBGrid J_M_Movilla ComponentONE Suite 4 24-06-2005 22:53:25
Como colocar los nombres de una tabla y sus paramteros en un eparedes Visual Basic 6.00 5 17-09-2004 00:00:00
como colocar una imagen a un menu ARIEL_79 Visual Basic 6.00 2 17-09-2004 00:00:00
Como colocar el Form en las barra de tareas Gace Visual Basic 6.00 2 17-09-2004 00:00:00


La franja horaria es GMT. Ahora son las 10:45:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios


right
Inactive Reminders By Icora Web Design