Foros del Web » Soporte técnico » Ofimática »

(Peticion) Macro de Suma de Columnas con Parametros

Estas en el tema de (Peticion) Macro de Suma de Columnas con Parametros en el foro de Ofimática en Foros del Web. Hola amigos foreros! Tengo una duda con macros, y es como puedo hacer una funcion que al ser llamada con 2 parametros me sume varias ...
  #1 (permalink)  
Antiguo 10/05/2006, 10:48
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta (Peticion) Macro de Suma de Columnas con Parametros

Hola amigos foreros!

Tengo una duda con macros, y es como puedo hacer una funcion que al ser llamada con 2 parametros me sume varias columnas dependiendo del valor del segundo parametro.

Por ejemplo, tengo en la celda B1 el valor de 3 que es el numero de meses a acumular, despues de la celda B4 a la M4 tengo los varios valores, por ejemplo ENE,FEB,MAR...DIC los cuales tienen cantidades distintas.

La cosa es hacer una funcion mas o menos asi :
=sumacols(B4,$B$1)
Donde B4 es el primer valor en la Hoja que corresponderia en este caso a Enero y $B$1 tendria valor de 3

La funcion tendria que Calcular la suma de B4+C4+D4 y regresar el valor en la celda donde fue llamada la funcion. Si yo cambiara los datos a la Funcion =sumacols(E7,5) me sumaria de E7+F7+G7+H7+I7

El caso es que no se como ya en la macro como tomar los parametros y/o sumar a partir del valor del primer parametro hasta el segundo parametro

No se si me explique?

Bueno, espero me puedan ayudar amigos

Saludos

Última edición por jsegundo; 10/05/2006 a las 11:13
  #2 (permalink)  
Antiguo 11/05/2006, 05:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
http://www.mytempdir.com/657994

Aquí tienes un ejemplo. Bueno era lo que pedías. Me costaba menos hacerlo que intentar explicarlo. Si no sabes lo que hago o no entiendes nada de VBA, comentamelo que te lo explico encantado.

Para ejecutar la macro vete a herramientas-macro-macro y ejecuta la que hay(creo que es macro1).

Un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #3 (permalink)  
Antiguo 11/05/2006, 08:28
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Cita:
Iniciado por potypoty
http://www.mytempdir.com/657994

Aquí tienes un ejemplo. Bueno era lo que pedías. Me costaba menos hacerlo que intentar explicarlo. Si no sabes lo que hago o no entiendes nada de VBA, comentamelo que te lo explico encantado.

Para ejecutar la macro vete a herramientas-macro-macro y ejecuta la que hay(creo que es macro1).

Un saludo
Gracias Amigo,

Es parecido a lo que estoy buscando, la unica variante es que la formula se pueda hacer en cualquier parte de las hojas de calculo, por eso la de pasar el primer parametro de la primera celda a sumar y es lo que no se como saber con que funcion se puede saber de que celda procede el parametro y ya con eso ponerlo en tu macro

Estas formulas estarian en la celda de totales
=Macro1(B3,3) ' Sumar de B3+C3+D3
=Macro1(B4,7) ' Sumar de B4+C4+D4+E4+F4+G4+h4
=Macro1(D5,4) ' Sumar de D5+E5+F5+G5

Algo asi,
Código:
Function Macro1(par1 as double, nscol as integer)

    nfor =  ActiveCell.x    ' Esta variable tendria la celda de donde fue llamada la formula, o algo asi
    ncs = nscol - 1  'Numero de columnas a Sumar
    nfil = rf(par1)  'Aqui es donde deberia saber la fila de donde proviene el par1 que es la primera columna a sumar
    ncol = rc(par1)  'Aqui es donde deberia saber la columna de donde proviene el par1 que es la primera columna a sumar

    num_val = FormulaR1C1 = "=SUM(" & par1 & ":" & ncol & ncs & ")" 'No se si se pueda algo asi, a lo mejor estoy desvariando jajaja
   'a lo mejor en vez de num_val fuera Activecell.FormulaR1C1 = "=SUM(" & par1 & ":" & ncol & ncs & ")" 

End Function
La mera verdad no se como se manejan y desconozco como se usan las funciones de VB, en macros solo he hecho cosas sencillas sin utilizar estas funciones por lo que no se si se pueda hacer algo asi

Saludos y Gracias

Última edición por jsegundo; 11/05/2006 a las 08:43
  #4 (permalink)  
Antiguo 11/05/2006, 08:46
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
De acuerdo

a ver si me he aclarado:
tu puedes tener la celda donde indicas el primer numero a sumar en cualquier sitio, no?
desde esa celda debe sumar todas las celdas que están hacia la derecha tantas columnas como indiques en una celda que será la celda activa, no?
vale. Y el resultado dónde quieres ponerlo? en celdas fijas o en celdas relativas a algo?
Como veo que estás conectado, si me respondes a esto rápidamente te podré echar una mano hoy. No vas mal pero te falla conocer este lenguaje y estas funciones.
un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #5 (permalink)  
Antiguo 11/05/2006, 08:48
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Si amigo, el resultado iria donde se ponga la formula =Macro1(X1,3)

No se si me explico?

Algo asi:


Última edición por jsegundo; 11/05/2006 a las 08:56
  #6 (permalink)  
Antiguo 11/05/2006, 09:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Me acaban de liar con un asuntillo. Me parece que lo que pretendes es un poco más lioso de lo que inicialmente había pensado y me llevará un poco más de tiempo. Si puedes poner un link a tu programa para que mañana le eche un vistazo y pensar en qué sería mejor. Te comento porque soy bastante novatillo en este inmenso mundo de excel e igual lo que tú buscas se podría hacer de otra forma distinta y más sencilla para mí.
Un saludo y siento no poder ayudarte hoy.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #7 (permalink)  
Antiguo 12/05/2006, 05:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
No es exactamente lo que tú pedías, pero creo que te podrá ser útil.

http://www.mytempdir.com/660279

En este ejemplo, si te pones en una de las celdas de totales te pregunta por los datos que quieres y pone la formula en la celda activa. Puedes poner las celdas que quieras. Para ello vete al editor de visual y en la parte izquierda haz doble click en la hoja 1. Aquí tienes las celdas que cuentan para hacerte las preguntas. Perdona por no hacerte los comentarios, pero si tienes alguna duda me comentas. Si esta tarde tengo un ratillo, te pongo otro link con comentarios.

Espero que te sirva

Un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #8 (permalink)  
Antiguo 16/05/2006, 10:36
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias amigo potypoty,

Una disculpa por no responderte pronto, estuve dandole vueltas a la funcion que posteaste y se ve interesante.

Pues como dices, es algo parecido, pero si en lugar de preguntar por las celdas se pasara como parametro en la funcion seria ideal.

Mira, aqui esta el archivo donde quiero poner la dichosa formula

http://www.mytempdir.com/670203

Echale una miradilla, porque asi como esa, hay varias mas, por eso de hacer una formula generica.

Saludos y gracias por la ayuda
  #9 (permalink)  
Antiguo 16/05/2006, 17:24
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Bueno, me encontre con un codigo de un tutorial y tome lo que crei me podia servir para lo que estaba buscando, la diferiencia con lo que yo queria es que en vez de utilizar una celda inicial, evaluo un rango de celdas como primer parametro y como segundo parametro la cantidad de columnas a sumar

Por ejemplo:
=sumcl(D11:O11,3) me daria como resultado 6
Del rango A2 a J2, sumaria D11+E11+F11 ( 1 + 2 + 3 ) y me devolveria el valor en la celda donde mande llamar la formula


Código:
Public Function sumcl(R As Range, y As Integer)
    Dim suma As Double
    suma = 0
    For i = 1 To y
        suma = suma + R(1, i)
    Next i
    sumcl = suma
End Function
Espero y esto le ayude a alguien igual que a mi, pero en lo particular si me hubiera gustado saber como manejar la fila y columna de una celda actual, pero en fin............otro dia sera!

Saludos!
  #10 (permalink)  
Antiguo 17/05/2006, 01:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Bien, las funciones y las macros de excel se pueden hacer y adaptar como más te guste y existen infinidad de detalles que sólo tú puedes decidir. Yo te ayudo con lo que podría ser el código o a darte ideas para seguir adelante. Ya sé que estás no son únicas y seguro que no son las más eficientes, pero realizan lo que quieres hacer.
Por esto insisto tanto en que hagais una buena descripción de la aplicación.
No sé si con lo que tienes te vale o necesitas algo diferente, pero a mí me gustaría saber si has conseguido lo de utilizar una macro o una función desde la celda de excel. Si tienes algo relacionado con este tema me gustaría mucho saberlo ya que me puede venir bien. Yo utilizo botones y cambios en la hoja para ejecutar mis macros.
Un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #11 (permalink)  
Antiguo 17/05/2006, 06:28
Avatar de jsegundo  
Fecha de Ingreso: noviembre-2003
Mensajes: 65
Antigüedad: 20 años, 5 meses
Puntos: 0
Amigo Potypoty,

Primero que nada, gracias por la ayuda proporcionada, mas o menos entiendo las funciones de VB pero necesito clavarme mas en eso ya que es muy buena ayuda a la hora de hacer macros, si pudieras recomendarme algun libro o si tienes algun manual en PDF que pudieras compartir, te lo agradecria mucho.

A lo que me preguntabas si es una macro o una funcion desde una celda, si es una funcion llamada desde cada una de las celdas que requiero la suma, todas son individuales y puedes usar la funcion en cualquier parte de la hoja.

Como habia dicho en el post anterior, me hubiera gustado que la funcion iniciara desde una celda pasada como parametro [=sumcl(D11,3)] esto para conocer como se sacarian los valores del primer parametro en VB, pero lo mas rapido y sencillo fue utilizar la funcion con el parametro de Rango [=sumcl(D11:O11,3)] y funciono muy bien.

De todas formas pongo el archivo ya con la formula por si te interesa.

http://www.mytempdir.com/671897

Saludos y gracias por todo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:30.