Generar aleatorios con condiciones

Espero puedas ayudarme con este problema con excel 2007.
Tengo una tabla con 2 columnas (Operador y fecha de programación). En la primera columna tengo la relación de trabajadores (No es una cantidad fija y no hay celdas vacías) y necesito que en la columna "Fecha de programación" se genere aleatoriamente fechas para cada uno de los registros (El rango de fechas lo tengo en una segunda tabla - Inicio y fin). La condición es que cada fecha generada debe tener la misma cantidad de registros o lo mas cercano posible

1 respuesta

Respuesta
2

1. ¿La segunda tabla está en la misma hoja?

2. ¿Cuántas fechas generadas quieres?, o también debe calcularse el número de fechas, ¿pero en base a qué?

3. Cuántas fechas tienes en la segunda tabla, sólo tienes dos fechas, ¿el inicio y el fin?

4. ¿Más o menos que periodo abarca ese rango de fechas?

Gracias por tu pronta respuesta, aquí envío las aclaraciones:

1. Ambas tablas están en la misma hoja, la primera va desde el rango A1 hasta B (Depende de la cantidad de personas, pero generalmente varia entre 100 a 150). la segunda tabla es la que contiene el rango de fechas que debo usar (estos se encuentran desde D2 hasta E2).
2. La cantidad de fechas es variable, esto depende de el rango de fecha que elija (Siempre el rango esta contenido dentro de 1 sola semana, no necesariamente la semana completa pero si días consecutivos. Ejemplo: del 01/01/2013 al 04/01/2013)
3. En la segunda tabla solo tengo 2 fechas, que son el rango de fechas que debo elegir (Inicio y fin del periodo)
4. El periodo varía semanalmente, pero este rango siempre se encuentra dentro de la misma semana.


El problema que tengo es que cuando quiero escoger números aleatorios, esto puede arrojar, por ejemplo, 100 veces 01/01/2013. La idea es que arroje las fechas de manera tal que cada día tenga la misma cantidad de repeticiones

Te anexo una macro.

Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: fecale
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub fecale()
'Calcula fecha aleatoria
'Por.Dam
ufila = Range("A" & Rows.Count).End(xlUp).Row
celda = "C2"
tot = ufila - 1
dias = Range("E2") - Range("D2") + 1
pror = Int(tot / dias)
Range(celda).FormulaR1C1 = "=RAND()"
Range("B2:B" & ufila).ClearContents
For i = 2 To ufila
    Do While True
        valor = Int(Range(celda) * 10)
        If valor > 0 And valor < dias + 1 Then
        cuenta = Application.CountIf(Range("B2:B" & ufila), valor)
        If cuenta <= pror Then
            'Cells(i, "B") = Range("D2") - 1 + valor
            Cells(i, "B") = valor
            Exit Do
        End If
        End If
        Range(celda).FormulaR1C1 = "=RAND()"
    Loop
Next
For i = 2 To ufila
    Cells(i, "B") = Cells(i, "B") + Range("D2") - 1
Next
End Sub

Indicaciones:

- Para ejecutar la macro requiero de una celda que no ocupes para poner una fórmula. En la macro estoy ocupando la celda C2, si quieres puedes cambiarla por otra celda, solamente tienes que cambiar en la macro, en esta línea, la nueva celda.
celda = "C2"
Por ejemplo, si vas a poner la celda “F1”
En la macro debe quedar así:
celda = “F1”
- Funciona para todos los nombres que pongas en la columna A
- Los nombres deben empezar en la celda A2, supongo que en la A1 tienes un encabezado.
- Los rangos de fechas deben estar en D2 y E2
- El calculo aleatorio de las personas, puede variar en cantidad, por ejemplo en un rango de 5 días y 30 personas, algunas fechas quedarán en 7 personas y otras fechas quedarán en 4 personas. Pero en general estarán promediando el mismo número de fechas.
Prueba y me comentas.
Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas