Excel - funcion argumentos variables

 
Vista:

funcion argumentos variables

Publicado por jorge (67 intervenciones) el 20/02/2007 20:26:57
es posible crear una funcion de argumentos variables en vb??

quiero decir si se puede programar una funcion sin especificar el numero de argumentos a entrar al hacer la llamada.

por ejemplo:

una función que calcule el promedio de una serie de valores introducidos al hacer su llamada, en ocasiones podrán ser 3 valores, o 10, ó 50 valores..... simplemente conseguir que procese todos los datos introducidos sean cuántos sean, por ejemplo guardando todos los valores introducidos en un vector de dimensión n, y que sea la función la que se encargue de recorrer el vector que ella misma generó con los valores a procesar, y una vez analizados los n datos, calcule el promedio.

no se si me he explicado correctamente, pero basicamente lo que pretendo es programar una función tipo excel suma(valor1; valor2; valor3;........) sin tener que especificar al programarla cuantos valores deberá introducir el usuario.

probablemente me direis que lo haga de otra forma más sencilla con bucles, vectores o similar, pero simplemente quiero saber si es posibles programar una función de este tipo y cómo hacerlo.

gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:funcion argumentos variables

Publicado por Abraham Valencia (2415 intervenciones) el 20/02/2007 20:34:18
No, no te diremos eso.

Primero, para capturar variables con munltiples valores, debes usar arrays.

Segundo, lo que pides, no necesariamente se hace con arrays. Puedes crear tu funcion propia (UDF) e implementarlo de otro modo. Por ejempolo, esta suma las celdas con un mismo color de trama:

Function contarfondo(rng As Range, colorfondo As Integer) As Double
Application.Volatile True
Dim celdas As Range
Dim contando As Integer

contando = 0

For Each celdas In rng.Cells
If celdas.Interior.ColorIndex = colorfondo Then
contando = contando + 1
End If
Next celdas
contarfondo = contando
End Function

en la celda donde quieres el resultado colocas:

=contarfondo(C3:C10,5)

Y te cuenta, en el rango C3:C10, cuantas celdas tiene coor de trama 5 (azul). Como ves, aqui tomo todo un trango, sin necesidad de usar arrays, ni muchas variables. Ahhh, antes que tu, si me digas "pero yo quiero sumar , sacar promedios etc", el principio de la funcion, para varios valores, es el mismo

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:funcion argumentos variables

Publicado por JuanC (792 intervenciones) el 20/02/2007 22:05:52
Algo así es lo que quieres:

Function Mi_Funcion(n_1, n_2, ParamArray n_n()) '2 fijos y el resto dinámico
Dim lMax&
lMax = UBound(n_n) 'Indice del último elemento del array n_n

Después recorres el array con un bucle accediendo a cada elemento

Revisa la ayuda para utilizar arrays y este tipo de funciones...

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar