
Restricciones con celdas variables en Solver
Publicado por cactus (16 intervenciones) el 09/06/2017 11:39:50
Buenas
Estoy haciendo una macro en Excel que me resuelve un ejercicio en Solver. Mi problema es que el número de variables que forman las restricciones son variables.
Es decir, yo tengo en la hoja "Resultados" mi celda objetivo y mis celdas a variar. El número de celdas a variar es variable, comenzando en la celda AF22 y terminando en la celda AF&var11. Del mismo modo, la fila de la celda objetivo también puede ser variable, estando en la columna AH y fila var2.
Las restricciones consisten en que las celdas AG22:AG&var11 sean iguales a otras celdas que hay en la pestaña "Datos de entrada": F31:F&var2.
Al ejecutar la macro obtengo el error '9' en el tiempo de ejecución: Subíndice fuera del intervalo.
Os pongo la macro para que se entienda mejor:
Muchas gracias de antemano! A ver si podéis ayudarme...
Estoy haciendo una macro en Excel que me resuelve un ejercicio en Solver. Mi problema es que el número de variables que forman las restricciones son variables.
Es decir, yo tengo en la hoja "Resultados" mi celda objetivo y mis celdas a variar. El número de celdas a variar es variable, comenzando en la celda AF22 y terminando en la celda AF&var11. Del mismo modo, la fila de la celda objetivo también puede ser variable, estando en la columna AH y fila var2.
Las restricciones consisten en que las celdas AG22:AG&var11 sean iguales a otras celdas que hay en la pestaña "Datos de entrada": F31:F&var2.
Al ejecutar la macro obtengo el error '9' en el tiempo de ejecución: Subíndice fuera del intervalo.
Os pongo la macro para que se entienda mejor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'Definición de variables
'Última fila 1
var2 = WorksheetFunction.Sum(Val(30), Sheets("Datos de entrada").Range("G28").Value)
'Última fila 2
var11 = WorksheetFunction.Sum(Val(21), Sheets("Datos de entrada").Range("G28"))
'Fila de la celda objetivo
var12 = var11 + Val(4)
'
'SOLVER
Sheets("Resultados").Select
Range(Cells(22, 32), Cells(var11, 32)).Select
Selection.ClearContents
'Objetivo
SolverOk SetCell:=Cells(var12, 34), MaxMinVal:=2, ValueOf:=0, ByChange:=Range(Cells(22, 32), Cells(var11, 32)), Engine :=3, EngineDesc:="GRG NonLinear"
'Restricciones
SolverAdd CellRef:=Sheets("Resultados").Range(Sheets("Restultados").Cells(22, 33), Sheets("Resultados").Cells(var11, 33)), Relation:=2, FormulaText:=Sheets("Datos de entrada").Range(Sheets("Datos de entrada").Cells(31, 6), Sheets("Datos de entrada").Cells(var2, 6))
SolverSolve
Muchas gracias de antemano! A ver si podéis ayudarme...
Valora esta pregunta


0