Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08-12-2006, 15:57:47
wontolla wontolla is offline
Un Nuevo Amigo
 
Registrado: dic 2006
Posts: 7
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
Responder Con Cita