Un compito comune a molte persone è scegliere un numero di nomi casuali da un lungo elenco. Ad esempio, potresti organizzare un concorso per la tua comunità e avere 1.000 persone che si sono iscritte. Con i loro nomi in ogni riga di una tabella, potresti chiederti come selezionare un certo numero di nomi in modo casuale.

Come spesso accade con Excel, esistono diversi approcci che puoi adottare. Ogni approccio esaminato in questo suggerimento presuppone che i nomi da cui è necessario selezionare siano elencati nelle celle da A1 a A1000.

Ovviamente, il tuo intervallo di nomi potrebbe essere più breve o più lungo, ma il punto è che si trovano in celle contigue nella colonna A. Gli esempi presumono anche che sia necessario selezionare 15 nomi a caso dall’elenco.

Il primo approccio consiste nell’utilizzare la funzione INDICE. Immettere la seguente formula nelle celle B1: B15:

=INDEX(A:A,INT((RAND()*1000)+1),1)

Una formula simile utilizza la funzione OFFSET:

=OFFSET($A$1,ROUNDUP(RAND()*1000,0),0,1,1)

È possibile, ma non probabile, ottenere lo stesso nome due volte nell’elenco risultante. (L’improbabilità deriva dalla dimensione dell’elenco originale. Più grande è l’elenco, meno probabile sarà la presenza di duplicati nell’elenco estratto.) Se ottieni un nome duplicato, forza semplicemente un ricalcolo del foglio di lavoro premendo F9 . Ogni volta che si ricalcola, l’elenco dei nomi estratti viene rigenerato.

Un altro potenziale approccio richiede l’uso di più colonne. Segui semplicemente questi passaggi:

  1. Immettere = RAND () nella cella B1.

  2. Immettere la seguente formula nella cella C1:

  3. Seleziona l’intervallo B1: C1 e riempi fino alla riga 1000.

  4. Seleziona l’intervallo B1: C1000.

  5. Premi Ctrl + C per copiare l’intervallo negli Appunti.

  6. Visualizza la scheda Home della barra multifunzione.

  7. Fare clic sulla freccia in basso sotto lo strumento Incolla e quindi selezionare Incolla speciale. Excel visualizza la finestra di dialogo Incolla speciale. (Vedi figura 1.)

  8. Assicurati che il pulsante di opzione Valori sia selezionato.

  9. Fare clic su OK. Ora hai valori statici in B1: C1000, il che significa che non cambieranno ogni volta che il foglio di lavoro viene ricalcolato.

  10. Seleziona una cella nella colonna C.

  11. Visualizza la scheda Dati della barra multifunzione.

  12. Fare clic sullo strumento Ordina. Excel visualizza la finestra di dialogo Ordina. (Vedi figura 2.)

  13. Fare clic su OK. La tabella (intervallo A1: C1000) è ordinata in base ai valori nella colonna C.

Il risultato è che la colonna C ora contiene una classifica di tutti i numeri casuali nella colonna B. Le prime 15 righe contengono i tuoi nomi casuali.

In questo approccio avresti anche potuto tralasciare completamente la colonna C e semplicemente ordinare la tua lista in base ai valori casuali statici nella colonna B.

Ancora una volta, i primi 15 sarebbero i tuoi nomi casuali.

Naturalmente, ci sono un numero qualsiasi di soluzioni macro che potresti usare per questo problema. La codifica di qualsiasi macro sarà simile, basandosi sulla funzione RND di VBA per generare numeri casuali. Di tutte le possibili soluzioni macro, forse la seguente è la più singolare e offre alcuni vantaggi non disponibili con le soluzioni della cartella di lavoro discusse finora:

Sub GetRandom()

Dim TempDO As Variant     Dim iRows As Integer     Dim iCols As Integer     Dim iBegRow As Integer     Dim iBegCol As Integer     Dim sCells As String     Dim J As Integer     Dim iWantRow As Integer

Set TempDO = New DataObject

iRows = Selection.Rows.Count     iCols = Selection.Columns.Count     iBegRow = Selection.Row     iBegCol = Selection.Column

If iRows < 16 Or iCols > 1 Then         MsgBox "Too few rows or too many columns"

Else         Randomize Timer         sCells = ""

For J = 1 To 15             iWantRow = Int(Rnd() * iRows) + iBegRow             sCells = sCells & Cells(iWantRow, iBegCol) & vbCrLf         Next J         TempDO.SetText sCells         TempDO.PutInClipboard     End If End Sub

Si noti che questa macro definisce, subito dopo la dichiarazione delle variabili, un nuovo DataObject e lo assegna alla variabile TempDO. Se la macro esplode su questa riga di codice, significa semplicemente che devi dire a VBA di fare riferimento alla libreria corretta:

  1. Nell’editor VBA, scegli Riferimenti dal menu Strumenti. VBA visualizza la finestra di dialogo Riferimenti. (Vedi figura 3.)

  2. Scorri l’elenco dei riferimenti finché non ne vedi uno chiamato Libreria oggetti di Microsoft Forms. (Potrebbe essere incluso un numero di versione nel nome di riferimento, ad esempio Microsoft Forms 2.0 Object Library.)

  3. Assicurati che la casella di controllo a sinistra della libreria di oggetti sia selezionata.

  4. Fare clic su OK.

Per utilizzare la macro, è sufficiente selezionare i nomi da cui si desidera selezionare i 15 nomi casuali. Negli esempi fino ad ora, si selezionerebbe l’intervallo A1: A1000. La macro quindi estrae 15 nomi a caso dalle celle e li inserisce negli Appunti. Quando esegui la macro, puoi quindi incollare il contenuto degli Appunti dove vuoi. Ogni volta che viene eseguita la macro, viene selezionato un diverso gruppo di 15.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (12475) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: