Saltar al contenido

¿Cómo ejecutar Solver correctamente desde este código vba?


Recommended Posts

publicado

Estoy tratando de hacer un código el cual use Solver para obtener una cantidad dentro de un filtro, de una pequeña base de datos.

La columna "G" tiene los numero 1 (para configurarlo como binario después)

La columna  "D" tiene las cantidades que quiero que Solver revise para que me de una cantidad designada en la columna "i".

 

El error que me arroja es "Error en el modelo. Compruebe que todas las celdas  y restricciones son validas" Es posible que algunas celdas de variables  estén marcadas como Integer, Binary o AllDiferent

Sub busquedadecantidad()

 Dim cantidad, binario As Range
 Dim hoja As Worksheet
 Dim i As Integer
 Dim datobuscado As Long
 ' "filtrado y seleccionado de datos"
    For i = 2 To 4 
    Sheets("valor del inventario").Select
    criterio = Range("H" & i)
    ultimocampo = Range("A1").End(xlDown).Row
    campototal = "A1:G" & ultimocampo
    'Asegurarse de que la base de datos esté limpia y que quede hasta la columna F
    Columns("A:G").Select
    Selection.AutoFilter
    ActiveSheet.Range(campototal).AutoFilter Field:=2, Criteria1:=criterio
    'Correcto
    
 ' "Selección y establecimiento de rangos"
    
    cantidadabajo = Range("D1").End(xlDown).Row
    cantidadarriba = Range("D1").Offset(1, 0).Row
    binarioabajo = Range("G1").End(xlDown).Row
    binarioarriba = Range("G1").Offset(1, 0).Row

    
    producto = Application.WorksheetFunction.SumProduct(Range("D" & cantidadabajo & ":D" & cantidadarriba).SpecialCells(xlCellTypeVisible), Range("G" & binarioabajo & ":G" & binarioarriba).SpecialCells(xlCellTypeVisible))
    
'  "Introduccion de formula"

    Range("B21540").Select
    Selection = producto
    
    Set hoja = ThisWorkbook.Sheets("valor del inventario")
    Set binario = hoja.Range("G" & cantidadabajo & ":G" & cantidadarriba).SpecialCells(xlCellTypeVisible)
    datobuscado = Range("I" & i).Value
    
  '  "Aplicacion de Solver"
    SolverReset
    SolverOk SetCell:="$B$21540", MaxMinVal:=3, ValueOf:=datobuscado, ByChange:="binario", Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverAdd CellRef:="binario", Relation:=5, FormulaText:="binario"
    
    SolverSolve
    
    
    Next i
    
    
End Sub

 

Espero me puedan ayudar, muchas gracias

Usodesolver(publico).xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.