Excel - formula personal

 
Vista:

formula personal

Publicado por jorge (67 intervenciones) el 23/02/2007 22:11:13
toy intentando programar uan formula personal para excel con vb, y la intención es introducir como argumento un rango, en concreto una celda, pero no el valor de una celda, sino una celda como coordenada.

la funcion debe hacer un bucle en el que compare el valor de la celda del argumento, y el valor de la celda ubicada una fila más abajo, de forma que el resultado de la formula se incremente en 1 ud siempre que argumento < argumento+1fila

pruebo con este codigo que supongo estará equivocado, pero no se donde

Public Function CALCULO_CONTROLADORES(SA_subestacion As Excel.Range) As Integer
If SA_subestacion > 0 Then
CALCULO_CONTROLADORES = 1
While SA_subestacion.Value < Range(Range(SA_subestacion).Row + 1, Range(SA_subestacion).Column).Value
CALCULO_CONTROLADORES = CALCULO_CONTROLADORES + 1
Wend
End If

End Function

cuando tecleo en la celda correspondiente a SA_subestacion un valor > 0, en la celda que utilizo la formula aparece un error de valor.
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

RE:formula personal

Publicado por José Luis (700 intervenciones) el 24/02/2007 03:27:55
Jorge,
¿Quieres una función o quieres una macro?
Por lo que explicas parece una función, pero lo que programas o intentas programar es una macro con tintes de función.

Creo que esto te valdá

Function CALCULO_CONTROLADORES(ByVal SA_subestacion As Range) As Long
Dim Celda As Range
Dim Contador As Long
Dim CeldaAct, CeldaAnt
Dim flag As Boolean
flag = False
Contador = 0
For Each Celda In SA_subestacion
CeldaAct = Celda.Value
If flag = True Then
If CeldaAnt < CeldaAct Then Contador = Contador + 1
End If
flag = True
CeldaAnt = CeldaAct
Next Celda
CALCULO_CONTROLADORES = Contador
End Function

si tienes alguna duda ... ya sabes donde estamos
Saludos
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:formula personal

Publicado por jorge (67 intervenciones) el 24/02/2007 16:06:05
efectivamente lo que pretendo es programar una formula personal para utilizar en excel, como si se tratara de la BUSCARV o de la COINCIDIR........ de excel.

Igual con una formula es un poco más complejo que con macro, (espero que no imposible) de hecho con macro ya lo he conseguido, pero no me termina de resultar cómodo del todo, y creo que si consiguiera automatizar el proceso con una fórmula seria la bomba!!

voy a intentar explicarme un poco mejo, pondré el caso concreto que me ocupa.

en excel:

..........A...................B.....................C............................D..................E
1.......SA................SD................CANT.................MODELO......COSTE
2........3...................8...........(formula pers).........FF-10PX......(formula)
3..(formula)....(formula).........(formula)..............EXP-01.......(formula)

en la fila 1 aparecen los titulos de cada campo (texto)
en A2 y B2 el numero de señales a cubrir (introducidas con el teclado)
formula pers es la formula que pretendo programar que debe entregar un valor entero >= 0
D2 corresponde con el modelo del controlador, seleccionado de una lista desplegable (datos, validacion, lista...)
en A3 y B3 las formulas calculan el num de señales disponibles en funcion del numero y modelo de los equipos
si A3 = 0, C3 calcula el num de modulos de expansión necesarios
en la columna E las formulas calculan el coste en funcion del numero y modelo de los equipos

se trata de automatizar el calculo de los equipos necesarios para poder dar cobertura a todas las salidas analogicas (SA) y digitales (SD) lógicamente dispongo de diferentes equipos cuyo MODELO puedo introducir en la celda D2, y cada equipo (controlador) tiene una capacidad en SA y SD u otra y también un precio distinto.

por lo que cuando introduzco un valor numerico entero positivo en C2, dependiendo del equipo escogido apareceran en A3 y en B3 la capacidad de SA y SD de dicho controlador multiplicadas por el num de equipos, por lo que la formula pers debera calcular en numero de controladores necesarios, adicionalmente, si num de SA a cubrir (A3) es igual a 0 se podran utilizar modulos de expansion (EXP-01) de forma que al introducir una valor numerico positivo en C2 aparece en C3 el num de modulos de expansión necesarios para cubrir todas las SA y SD en función del num de controladores seleccionados, por lo que la formula pers deberá optimizar el numero de de controladores y el num de expansiones en funcion del coste total.

las estrategias son las siguientes:

si A2>0 formula pers valdrá 1 (provisionalmente) por lo que en función de 1 controlador del modelo seleccionado (FF-10PX) se calcula el coste del sistema y el num de señales disponibles (esto lo hacen otras formulas de excel), a continuación el valor de formula pers debe aumentar en una ud. mientras que las señales disponibles no superen a las requeridas (A3>A2, y B3>B2) , y una vez las señales disponibles sean suficientes para cubrir las necesarias concluir que formula pers = controladores necesarios

si A2=0 automaticamente se cubriran todas las señales requeridas con modulos de expansion, y aparecerá el coste para los modulos necesarios en la columna E, formula pers debe adoptar el valor provisional 1, y comaparar si el coste total aumenta o disminuye, si disminuye, formula pers deberá aumentar 1 ud. hasta encontrar la mejor solución (minimo coste)

realmente las celdas dependen unas de otras, por lo que también hay algo de referencia circular.
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:formula personal

Publicado por José Luis (700 intervenciones) el 25/02/2007 13:11:39
Si lo preparas un poco mejor, quizás podrías usar SOLVER , te daría la mejor solución según lo que pidieses.

Es un poco complicado pero deberías pensártelo.

Saludos
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:formula personal

Publicado por JuanC (792 intervenciones) el 25/02/2007 13:44:00
particularmente no me queda del todo claro el problema, pero por lo poco
que interpreto creo que con una función no es posible
si dices que con una macro funciona, pues para automatizar el proceso
puedes utilizar el evento Worksheet_Change o Worksheet_SelectionChange
según te convenga o con un simple botón estaría bien, no?

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