Certamente tu hai in mente un algoritmo a me sconosciuto, cerchero' quindi di interpretare alla lettera quello che ho capito e poi si vedra'.
Bisogna esaminare la colonna del gg 1, cercare gli M e di questi scegliere un nominativo a caso e riportarlo in BA1
Si ripete con la colonna del gg 2, e si riporta il nominativo sorteggiato in BB1
E cosi' per gli altri giorni presenti in tabella
Si ripete cercando P; poi si ripete cercando N
Quanto detto si puo' ottenere con una macro come questa:
- Codice: Seleziona tutto
Sub eStraz()
Dim wArr(1 To 50), I As Long, J As Long, K As Long, lFor As String
Dim myRa As Long, dRange As String, eStraz, L As Long
'
dRange = "BA1" '<<< L'area dove si scrivono le estrazioni
eStraz = Array("M", "P", "N") '<<< I turni che si devono cercare, in questa sintassi
Randomize
Range(dRange).CurrentRegion.ClearContents
For L = 0 To UBound(eStraz)
lFor = eStraz(L)
Range(dRange).Offset(L, 0) = lFor
For I = 3 To Cells(3, Columns.Count).End(xlToLeft).Column
K = 0
For J = 4 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(J, I) = lFor Then
K = K + 1
wArr(K) = Cells(J, "B")
End If
Next J
If K > 0 Then
myRa = Int(Rnd() * K) + 1
Range(dRange).Offset(L, I - 2) = wArr(myRa)
End If
Next I
Next L
MsgBox ("Completato...")
End Sub
Il codice va inserito in un Modulo standard del vba (es Modulo1).
Le righe marcate <<< consentono di indicare l'area di creazione della tabella riepilogo e i Turni da cercare.
E' necessario che l'area indicata come dRange sia "isolata" dal resto del foglio almeno da una colonna vuota; analogamente sopra (se si indica un'area che parte dopo Riga1) e sotto la tabella di 3 righe che si andra' a creare (tante righe quante sono le voci presenti in eStraz) e' necessario che ci sia una riga vuota.
Prova e fai sapere...