Estrazione casuale da elenco nomi
Hai un problema con Excel? 
Estrazione casuale da elenco nomi
di nicopana (utente non iscritto) data: 25/08/2014 13:05:08
Sarebbe possibile in Excel costruire una macro o un qualcosa che mi permetta da un elenco di nomi di estrarne casualmente uno alla volta alla pressione di un tasto?
di nichicanta (utente non iscritto) data: 25/08/2014 15:42:36
Ciao nicopana, ricerca bene nello storico delle discussioni di questo bellissimo forum e ti assicuro che ci sono varie soluzioni al tuo quesito (vedi quella proposta da Vecchio Frac, da gaetanopr e altri esperti del forum).
di Grograman (utente non iscritto) data: 25/08/2014 15:48:53
Supponendo che in colonna A ci sia l'alfabeto (quindi la matrice è ferma a 26):
=INDIRETTO("A"&CASUALE.TRA(1;RIGHE(A1:A26)))
Ovviamente sapendo quale posizione occupa l'ultima stringa di testo sarebbe:
=INDIRETTO("A"&CASUALE.TRA(1;26)) |
di nicopana (utente non iscritto) data: 25/08/2014 15:58:23
@nichicanta avevo provato la ricerca, tipo con estrazione casuale, estrazione, nomi casuali...ma non mi ha dato nessun risultato, ecco perchè ho scritto un nuovo post
@grograman io ho i nomi tra C4 e C70, ho cambiato la tua funzione così =INDIRETTO("C"&CASUALE.TRA(C4;C70))
Ma mi restituisce #VALORE. come mai?
di Grograman (utente non iscritto) data: 25/08/2014 16:13:23
Perchè la funzione Casuale.tra vuole numeri, non stringhe ;)
Devi modificarla così:
E se premi F9 cambi il nome estratto
=INDIRETTO("C"&CASUALE.TRA(4;70)) |
di nicopana (utente non iscritto) data: 25/08/2014 16:59:52
Ti ringrazio, funziona alla grande.
Però con questa funzione sono certo che mi estrae casualmente dall'elenco, uno alla volta, un nome, senza che poi venga ripetuto?
Ti faccio questa domanda perchè praticamente, dall'elenco dei nomi, supponiamo che ad ogni estrazione vorrei che quel nome non fosse più sorteggiato (per esempio aggiungendoci a fianco del nome un simbolo, tipo anche una "E"), e che quindi l'elenco su cui la funzione insisterebbe si aggiornerebbe con i soli nomi rimasti.
di nicopana (utente non iscritto) data: 25/08/2014 18:28:35
E' come se in pratica, ad ogni F9, vorrei escludere in qualche modo qualche nominativo dall'elenco, che però rimane sempre fisso tra le celle iniziali e finali prestabilite.
Cioè dovrei realizzare un'estrazione casuale dei nominativi dall'elenco, elenco che si aggiorna e si riduce per ogni sorteggio andando ad eliminare quelli di volta in volta esclusi secondo un qualche criterio, anche e semplicemente inserendo accanto alla voce nell'elenco un simbolo, un numero...
di Grograman data: 26/08/2014 09:00:04
Ho alegato un esempio di cui riporto il codice. Non è proprio bellissimo, ma dovrebbe fare quello che intendi.
Estrae un valore a caso ed elimina il valore estratto. Se lo rilanci prima toglie le celle vuote (quindi attenzione che ti sposta verso l'alto la colonna C) e poi ripete l'estrazione.
Option Explicit
Sub Casaccio()
Dim wb As Workbook
Dim ws As Worksheet
Dim x As Long, y As Long
Dim rNomi As Range
Set wb = ThisWorkbook
Set ws = wb.Sheets(1)
With ws
x = .Range("C" & .Rows.Count).End(xlUp).Row 'ultima riga colonna C
Set rNomi = .Range(.Cells(4, 3), .Cells(x, 3)) 'range da cui estrarre, C4:Cx
On Error Resume Next
rNomi.SpecialCells(xlCellTypeBlanks).Delete shift:=xlShiftUp 'elimino celle vuote per non estrarne i valori
On Error GoTo 0
y = Application.WorksheetFunction.RandBetween(rNomi.Rows(1).Row, rNomi.Rows.Count + 3)
.Cells(1, 4) = .Cells(y, 3).Value
.Cells(y, 3).ClearContents
Set rNomi = Nothing
End With
Set ws = Nothing
Set wb = Nothing
End Sub
|
di nicopana (utente non iscritto) data: 26/08/2014 09:27:54
E se io invece volessi lasciare intatto l'elenco e magari mettere io manualmente un simbolo accanto al nome che è stato estratto, ed essere sicuro che continuando così con l'estrazione casuale dall'elenco i nomi "segnati" non mi vengono più estratti?
Vuoi Approfondire?