Saltar al contenido

Escenarios, Solver y Permutaciones


ldeliderazgo

Recommended Posts

publicado

Hola a tod@s

Tengo una combinacion de 5 ingredientes (variables), la cual cada una de estas variables puede tomar valores entre 0 y 100. La suma de las 5 variables siempre tiene un valor fijo de 100%. En funcion de los valores de estas variables, se obtiene un resultado.

Necesito que excel me muestre todas las combinaciones posibles (cambios en las variables) que me aporten el resultado deseado.

He probado con Solver, peo no consigo que funcione.

He valorado crear escenarios, pero son 90 millones de escenarios (me gustaria resoverlo antes de morirme ;-) )

Las tablas de datos (Creo) solo permiten 2 variables

Alguna ayuda ? Me he leido todos los manuales, foros, que he enocntardoe stos ultimos 4 dias, y no consigo avanzar.

Os agradezco la ayuda de antemano.

Salu2

help excel2.xls

publicado

Gracias Armando

El archivo que amablemente me has enviado, me indica las combinaciones posibles, pero no incorpora los datos a la formula que yo tengo.

Probablemente me haya explicado mal en mi primer mensaje. El asunto es que si ves la hoja "calculos" en el archivo que anexe en mi primer mensaje, las 5 variables se hallan en C3,C4,C5,C6,y C7. En esa misma hoja, estan los valores actuales (celdas C21,D21,E21,F21,G21) y los valores deseados (nuestros valores objetivos) en C20,D20,E20,F20,G20.

Simplemente necesito que excel, me indique que combinacion, o mejor dicho que combinaciones son validas, para conseguir los 5 valores deseados (valores objetivos).

Disculpa las molestias, y te agradezco la informacion enviada y toda la que me puedas aportar para resolver este enigma......

Gracias Armando

publicado

Una vez mas Gracias por tu paciencia y ayuda Armando. Siguiendo FIELMENTE tus INDICACIONES ;-) paso a exponer de manera mas clara el problema.

Tenemos 5 tipos de manzanas (Amarilla,Roja,Azul,Verde y Negra). Cada tipo de manzana tiene una composicion diferente. La comporsicion de cada manzana tiene 8 tipos de nutrientes (grasas, proteinas, hidratos de carbono, azucares, fibra, agua, celulosa, alcohol).

Recientes estudios de la AMNE (Asociacion Mundial de Negados para el Excel) a la cual pertenezco, ha descubierto que comer una cantidad determinada de manzanas puede incrementar diferentes partes de la inteligencia humana. Lamentablemente la señora de la limpieza de la asociacion, borro de la pizarra de la asociacion la cantidad necesaria de cada tipo de manzanas) ;-)

Sin embargo conocen varias pistas que les ayudarán a descubrir la COMBINACION SECRETA si algun GENIO del Excel les hecha una mano.....

Sabemos que :

  • Debemos comer 1000 gr de manzanas al dia.
  • Podemos comer esos 1000 gr de una sola manzana, de 2 manzanas diferentes, 3 manzanas diferentes, 4 manzanas diferentes o de 5 manzanas diferentes.
  • Conocemos que porcentaje de cada uno de los nutrientes (grasas, proteina, hidratos de carbono, azucares, fibra, agua, celulosa, alcohol) contiene cada tipo de manzana (estos valores van contenidos en el rango de celdas E9:L13).
  • Al encontrarse las 5 variables en porcentajes, sabemos que en cada celda los valores van desde 0% a 100%. Logicamente, la suma de los 5 porcentajes sobre la cantidad total, debe ser igual a 100%. Ejemplo 50% amarillas, 20% rojas, 10% Azul, 10% Verde 10% Negra. Total sumatoio de los porcentajes sobre la totalidad SIEMPRE es igual a 100%.

Restricciones:

  • De las manzanas amarillas tiene que haber un minimo de 50% y un maximo de 100%
  • De las manzanas rojas tiene que haber un minimo de 0% y un maximo de 30%
  • De las manzanas azules tiene que haber un minimo de 5% y un maximo de 35%
  • De las manzanas verdes tiene que haber un minimo de 10% y un maximo de 40%
  • De las manzanas negras tiene que haber un minimo de 15% y un maximo de 45%

Gracias a las investigacions de la AMNE (Asociacion Mundial de Negados para el Excel) se ha descubierto y comprobado que conociendo los porcentajes de cada uno de los nutrientes, podemos predecir las propiedades de esa mezcla de manzanas, y los beneficios sobre nuestras 5 habilidades que componen nuestra inteligencia (Memoria, Agilidad Matematica, Agilidad Lectora, Idiomas y Dibujo).

Sabemos que la Memoria de las personas mejora tomando "X" gr de (Fibra+Agua+Celulosa)

Sabemos que la Agilidad Matematica mejora tomando "Y" gr de (Grasas+Proteinas)

Sabemos que la Agilidad Lectora mejora tomando "Z" gr de (Agua+Celulosa+Alcohol)

sabemos que la Habilidad para los idiomas mejora tomando "w" gr de (Proteina + Fibra)

Sabemos que la Habilidad para el dibujo mejora tomando "V" gr de (Hidratos+Azucares+Fibra)

Que diferentes RECETAS podemos obtener para que los "valores actuales" (la receta actual) sean igual que los "valores deseados" (la receta que buscamos)? Que porcentaje de Manzanas Amarillas, rojas, azules, amarillas y negras necesitan para que los valores actuales sean igual a los valores deseados?

El presidente de la AMNE (Asociacion Mundial de Negados para el Excel) ha desarrollado una hoja recogiendo todos estos datos, pero es tan sumamente "corto" que no sabe como ayudandose de excel, esta aplicacion ofimatica le indique las diferentes combinaciones existentes para conseguir una receta que cumpla los valores deseados.

Este NEGADO total para el Excel, solicita la ayuda de los Maestros de esta aplicacion. Promete enviar un paquete de manzanas a quien le ayude ......;-)

Adjunto un nuevo modelo por si sirve de ayuda.

Gracias!!! Y perdonar el ROLLO.

manzanas.xls

Archivado

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

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.