Como repartir de forma equitativa pero aleatoria

Tengo un problema que resolver en Excel. El caso es que tengo 105 hidrantes de riego con un consumo cada uno de ellos y necesito crear 5 turnos de riego de forma que cada grupo tenga mas o menos el mismo consumo y mismo número de hidrantes. Es decir asignar un valor aleatorio del 1 al 5 a cada hidrante de forma que todo este repartido de forma equitativa.

2 Respuestas

Respuesta

Te aporto una idea.

En la celda A1 escribe                =ALEATORIO()

Copia esa fórmula hacia todo el rango A1:E31 

En la celda G1 escribe =JERARQUIA(A1, $A$1:$G$31)

Luego copia esa misma fórmula hacia el rango G1:K31...

Alli tendrás 105 números distribuidos de manera aleatoria, sin repetición, que puedes mantener como plantilla... cuando quieras volver a generar otra repartición aleatoria... para fijar un resultado copia este último rango hacia otro lugar usando la opción Pegar valores

Respuesta
1

Por fórmulas lo veo medio difícil por el manejo que se le tiene que dar a los hidrantes duplicados tanto en fila como en columnas, lo más fácil es una macro que discrimine los duplicados, mira el ejemplo con una macro cada que la ejecutes te generara nuevos valores al azar.

Para instalar la macro solo abre un libro nuevo y haces los siguiente

1.- Seleccionas pestaña programador

2.- Luego el botón Visual Basic

3.- En el menu seleccionar insertar y luego modulo

4.- Copias el código que puse en este post y pegas

5.- Puedes dar F5 o simplemente seleccionas ejecutar y luego ejecutar sub/userform

Sub repartir_hidrantes()
Dim unicos As New Collection
Set RESULTADOS = Range("b3").Resize(21, 5)
matriz = resultado
For I = 1 To 21
    For J = 1 To 5
OTRO:
        On Error Resume Next
            NUMERO = WorksheetFunction.RandBetween(1, 105)
            unicos.Add NUMERO, CStr(NUMERO)
            If Err.Number > 0 Then GoTo OTRO
                RESULTADOS.Cells(I, J) = NUMERO
        On Error GoTo 0
    Next J
Next I
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas