Agregar variables en una macro en excel

Dante, Respecto a la pregunta anterior... Si deseo modificar la cantidades de persona y de días a asignar de manera aleatoria en una macro, ¿qué debo modificar de la macro pasada?

1 respuesta

Respuesta
1

H o l a:

¿Pero existe un límite de personas y de días?

Cuáles serían las combinaciones de personas y de días, es decir, si poner 15 personas y 5 días, ¿entonces el número de días se repetiría 3 veces?

También mencionabas que quieres un sexto día que diga "No aplica", ¿eso qué significa?

Podrías explicarlo con ejemplos a lo que quieres llegar.

H o l a:

Creo que ya lo resolví:

Tienes que tener 2 hojas, en la "Hoja1" van las personas y los resultados.

En la "Hoja2" tienes que poner las variables, como se muestra en la imagen:

Con esta versión de macro, en la Hoja2 en la columna A tienes que poner los días que vas a seleccionar aleatoriamente. En la columna C el número de personas. En la D la fila inicial en dónde quieres poner el resultado. Y en la E la columna en dónde quieres poner el resultado.

Nota: La columna "B" de la hoja2 es para la macro.


Utiliza la siguiente macro:

Sub DiaAleatorio()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Columns("B").ClearContents
    numdia = Application.CountA(h2.Columns("A")) - 1
    numper = h2.[C2]
    fil = h2.[D2]
    col = h2.[E2]
    '
    n = 0
    col = Columns(col).Column
    '
    Do While True
        y = Evaluate("=RANDBETWEEN(1," & numdia & ")")
        If h2.Cells(y + 1, "B") = "" Then
            h2.Cells(y + 1, "B") = "x"
            h1.Cells(fil, col) = h2.Cells(y + 1, "A")
            col = col + 1
            n = n + 1
            If n = numdia Then
                h2.Columns("B").ClearContents
            End If
            If n = numper Then
                Exit Do
            End If
        End If
    Loop
End Sub

Prueba y me comentas

H o l a:

Utiliza la siguiente macro:

Sub DiaAleatorio()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Columns("B").ClearContents
    numdia = Application.CountA(h2.Columns("A")) - 1
    numper = h2.[C2]
    fil = h2.[D2]
    col = h2.[E2]
    '
    n = 0
    m = 0
    col = Columns(col).Column
    '
    Do While True
        y = Evaluate("=RANDBETWEEN(1," & numdia & ")")
        If h2.Cells(y + 1, "B") = "" Then
            h2.Cells(y + 1, "B") = "x"
            h1.Cells(fil, col) = h2.Cells(y + 1, "A")
            col = col + 1
            n = n + 1
            m = m + 1
            If n = numdia Then
                h2.Columns("B").ClearContents
                n = 0
            End If
            If m = numper Then
                Exit Do
            End If
        End If
    Loop
End Sub

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

Dante, Yo creo que es más fácil preguntarte así con la imagen.. por ejemplo la primera macro que me mendaste era para 7 personas y solo con darle clic en "asignar días" se corre así para todas las personas para la primera semana, le doy clic de nuevo y se me corre para las 7 personas para la segunda semana y así sucesivamente.

Quisiera que funcionara igual pero para 8 personas, teniendo igual los días de Lunes a Viernes y con la opción de que 3 personas no falten el mismo día de manera semanal.

Es decir, por ejemplo:

La persona 1 faltará el día Lunes

La personas 2 y 3 faltarán el día Martes

La persona 4 y 5 faltarán el día Miércoles

La persona 6 y 7 faltarán el día Jueves

La persona 8 faltará el día Viernes

Cómo pudiera hacer eso?

Muchísimas gracias!

H o l a:

Es difícil realizar la macro si no me pones el detalle que requieres:

Por ejemplo, esto es nuevo:

La persona 1 faltará el día Lunes

La personas 2 y 3 faltarán el día Martes

La persona 4 y 5 faltarán el día Miércoles

La persona 6 y 7 faltarán el día Jueves

La persona 8 faltará el día Viernes


Explícame con imágenes esta parte:

"y con la opción de que 3 personas no falten el mismo día de manera semanal"

Definitivamente tendría que hacer otra macro.

Ayúdame con lo siguiente: valora esta pregunta por la macro que te entregué y en una nueva pregunta me explicas con lujo de detalle y con imágenes lo que quieres.

S a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas