Según criterio sortear y extraer resultados

Tengo una tabla con nombres y tengo que generar grupos al azar según criterios, por ejemplo equipos de 2, 3, 4, etc. Y extraerlos por equipos a otras tablas y no puedo lograr, logre que según el numero me los agrupe en un numero pero el agruparlos no se que hacer...

Se puede ver que según el numero me forma los equipos al azar, claro que como involucra un aleatorio no puedo tocar mas nada porque los cambia. Tengo que formar 6 equipos con nombre y team. Pero extraerlos según numero y nombre correspondiente en el cuadro de la derecha es otra cosa, no logre que funcionara.

Formulas para los números: =SI.ERROR(REDONDEAR.MAS(JERARQUIA(A11;$A$11:$A$36)/$M$15;0);"")

1 respuesta

Respuesta
2

Algunas recomendaciones:

1. "Se puede ver que según el numero me forma los equipos al azar, claro que como involucra un aleatorio no puedo tocar mas nada porque los cambia." Para que NO se cambien los números, se debe realizar con una macro.

2. No utilices tablas, es más complicado trabajar con ellas con las macros.

3. Utiliza rangos normales de celdas.


Te ayudo con la macro, pero debes definir algunas reglas.

Por ejemplo, en tu imagen veo 12 nombres. Si en Equipos escribes un 5. Entonces formarías 2 equipos de 5 nombres y un equipo de 2 nombres.


Veo que tus cuadros de resultado los tienes abajo. Pero sería más práctico que cada equipo estuviera en sus propias columnas. De esa manera sería más fácil de borrar y de llenar.

Otro detalle de tu ejemplo, tienes 2 veces a "Juan", en la celda A1 y A7. Supongo que deben ser nombres únicos.

Pon tus datos como se muestra en la siguiente imagen:

En la celda E2 pon el número de personas por equipo.

Pon la siguiente macro en un módulo:

Sub grupos()
  Dim i As Long, j As Long, k As Long, n As Long, x As Long, y As Long
  Dim arr As Variant
  Dim equipos As Long
  Dim lr As Long, nmax As Long
  '
  Application.ScreenUpdating = False
  '
  equipos = Range("E2")
  lr = Range("A" & Rows.Count).End(3).Row
  For i = 2 To lr Step equipos
    n = n + 1
    Range("B" & i).Resize(equipos).Value = n
  Next
  arr = Range("B2:B" & lr).Value
  Range("B2:B" & Rows.Count).ClearContents
  For k = 1 To UBound(arr)
    x = Int(UBound(arr) * Rnd + 1)
    y = arr(x, 1)
    arr(x, 1) = arr(k, 1)
    arr(k, 1) = y
  Next
  Range("B2").Resize(UBound(arr)).Value = arr
  Range("G1", Cells(Rows.Count, Columns.Count)).ClearContents
  j = 7
  nmax = WorksheetFunction.Max(Range("B2:B" & lr))
  For i = 1 To nmax
    Range("A1:B" & lr).AutoFilter 2, i
    ActiveSheet.AutoFilter.Range.Copy Cells(1, j)
    j = j + 3
  Next
  ActiveSheet.AutoFilterMode = False
  Application.ScreenUpdating = True
End Sub

Sigue las Instrucciones para ejecutar la macro

  1. Abre tu archivo 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. Para ejecutarla presiona F5

Este es el resultado:

Cada que ejecutes la macro, te pondrá aleatoriamente los nombres en cada grupo.

[Si te ayuda, no olvides valorar la respuesta.

¡Gracias! 

Me disculpo por la tardanza en responder.

Como siempre la mejor predisposición y respuesta, estoy muy agradecido. Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas