Matriz de combinaciones posibles /restricciones en Excel

Tengo que crear una matriz digamos de combinaciones posibles. Es decir, tengo:
- Varias líneas de producción (L1, L2,...)
- Varios productos: (leche, zumo...)
- Varios tipos de botella (vidrio, PET,...)
- Varios tipos de etiqueta.

La restricción es la Línea de producción. Es decir, cualquier botella puede llevar cualquier producto y etiqueta, pero hay algunas líneas que no aceptan un producto, otras no aceptan una botella/etiqueta,... (por ejemplo, la leche puede ir en cualquier botella pero sólo en la L1, y esta línea no puede llevar botellas de plástico ni etiquetas tipo X).

Quiero hacer una especie de matriz o tabla dinámica que me permita seleccionar el producto, y que me salgan las opciones posibles filtrando.

Por ejemplo, selecciono Leche y en la columna de Líneas me deja marcar sólo la L1, y al marcar sólo L1 que me salgan sólo las botellas que pueden ir por dicha línea, por lo que al final tengo todas las combinaciones reales que se pueden hacer con la leche.

No sé si es posible pero no paro de darle vueltas y no hay manera...

2

2 Respuestas

54.145 pts. A pregunta detallada, respuesta exacta. A pregunta...

Sí que hay manera. Aquí tiene la solución:

https://avanzado.es/excel/lista-desplegable-condicionada-en-excel/ 

Aplicado a su caso, sería así:

En la izquierda, seleccionado L1 solo puede elegir Leche

En la derecha seleccionando otra Línea puede elegir cualquier producto de la lista.

Abajo del todo tiene que crear la LISTA DE VALIDACIÓN con cada una de las columnas.

En el caso de la leche la validación sería, en B3  (DATOS --> Validación de datos)

=SI(A3="L1";$B$25;B25:B35)

Coloque la lista donde quiera y ajuste la fórmula de validación a ese rango de la lista.

Si le sirvió, vote la respuesta, por favor. Si necesita ayuda, pida más información.

191.425 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Vamos suponiendo que tu información esta como en la imagen, lo que te conviene es tener todas las posibles combinaciones que se muestran en el lado derecho en este caso son 192 combinaciones posibles, una vez que las tengas tendrías que agregar una columna llamada restricción y la condición en este caso le puse si para ejemplicar que en esa línea no se llevara a cabo esa combinación, aquí hay dos formas de darle solución a lo que quieres una es por medio de un filtro (seleccionas la información, luego ordenar y filtrar y filtro) en el cual al abrirlo seleccionas cualquiera de los conceptos por ejemplo leche y te mostrara todos los productos que sean leche junto con toda la información, la otra es por medio de 4 textbox instrustrados en la hoja en cuanto tecles cualquier dato en uno de ellos filtrara en automático, y si ya filtraste y tecleas en un segundo textbox aplica un filtro al filtro y así sucesivamente con los demás textbox, te paso la macro para realizar las combinaciones, solo asegurate de poner la información tal como aparece en la imagen de la izq.

y aqui esta la macro

Option Base 1
Sub combina()
Dim x As WorksheetFunction
Set x = WorksheetFunction
Set h1 = Worksheets("hoja1")
Set h2 = Worksheets("hoja2")
Set datos = h1.Range("a1").CurrentRegion
With datos
    r = .Rows.Count
    Set datos = .Rows(2).Resize(r - 1)
    With x
        nl = .CountA(datos.Columns(1))
        np = .CountA(datos.Columns(2))
        ne = .CountA(datos.Columns(3))
        net = .CountA(datos.Columns(4))
        Total = .Product(nl, np, ne, net)
    End With
ReDim matriz(Total, 4)
matriz2 = datos
Set destino = h2.Range("a2").Resize(Total, 4)
y = 1
For l = 1 To nl
    For p = 1 To np
        For e = 1 To ne
            For et = 1 To net
                matriz(y, 1) = matriz2(l, 1)
                matriz(y, 2) = matriz2(p, 2)
                matriz(y, 3) = matriz2(e, 3)
                matriz(y, 4) = matriz2(et, 4)
                y = y + 1
            Next et
        Next e
    Next p
Next l
h2.Range(destino.Address) = matriz
Set destino = Nothing: Set datos = Nothing
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas