allora il mio obbiettivo è effettuare un solo sorteggio all'inizio che a cascata creerà 4 gruppi di 10 persone numerandole da 1-10,11-20,21-30 e31-40 che poi a loro volta si andranno a rimischiare secondo una sequenza da me predeterminata riportata nell'ultimo foglio denominato "SETTORI".
Non indichi particolari esigenze legate al sorteggio, quindi ti propongo questo metodo che applicheremo al foglio
1°turnoIntanto in foglio
tabella generale in colonna B tu hai l'elenco fisso delle persone da "sorteggiare"; la colonna C non ci interessa piu', come pure la J e la K
Nel foglio
1°turno tu gia' ricrei l'elenco delle persone in colonna K usando un "collegamento" alla colonna C di foglio
tabella generale; modifica questo collegamento alla colonna B, cioe' all'elenco statico dei nominativi.
La nostra macro andra' a modificare i numeri di colonna J del foglio selezionato; in questo modo, sfruttando la numerazione che hai gia' inserito in colonna A, le formule gia' presenti in colonna B creeranno degli elenchi casuali.
Valuta tu se non sia piu' conveniente, in colonna L, che la formula attuale
=CERCA.VERT(K2;B3:C60;2;FALSO) non sia meglio convertirla in
=CERCA.VERT(J2;B3:C60;2;FALSO)Cioe' se non sia piu' opportuno usare il "numero" piuttosto che il "Nominativo" come chiave del Cerca.Vert; questo per gestire eventuali omonimie.
La macro che "sorteggia" i numeri da inserire in colonna J:
- Codice: Seleziona tutto
Sub Mixer()
Dim MxCol, ShArea As Range, I As Long
Dim miSh As Long, maSh As Long, Try As Long
'
MxCol = Application.Match("CONCORRENTE", Range("F1:AZ1"), False)
If Not IsError(MxCol) Then
Set ShArea = Range(Cells(2, 5 + MxCol), Cells(2, 5 + MxCol).End(xlDown))
miSh = 1
maSh = Application.WorksheetFunction.CountA(ShArea.Offset(0, 1))
ShArea.ClearContents
Randomize
For I = miSh To maSh
reTry:
Try = Int(Rnd() * maSh) + 1
If Application.WorksheetFunction.CountIf(ShArea, Try) = 0 Then
ShArea.Cells(I, 1) = Try
Else
GoTo reTry
End If
Next I
Else
MsgBox ("Non trovata la colonna Concorrente nell'intervallo F1:AZ1" & vbCrLf _
& "Nessun Sorteggio effettuato")
Exit Sub
End If
End Sub
Per inserire il codice:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
Poi torna su Excel e quando vuoi "sorteggiare" i nominativi seleziona il foglio su cui lavorare e lancia la macro Mixer:
-premi Alt-F8
-seleziona Mixer dall'elenco di macro disponibili
-premi Esegui
Oppure associa a un pulsante da inserire sul foglio su cui vuoi lavorare.
Non ho capito il significato degli altri fogli; quanto fatto per il foglio
1°turno puo' essere replicato sugli altri fogli (la colonna in cui verra' variato il numero sorteggiato viene identificata automaticamente)
Ciao