Nancy sta cercando di convincere Excel a scegliere 50 “numeri” contenenti ciascuno otto caratteri casuali. I caratteri possono essere numeri o lettere (maiuscole o minuscole).

Se i tuoi numeri casuali dovessero essere davvero numeri (solo cifre), generarli sarebbe facile. Tutto quello che devi fare è usare la funzione RANDBETWEEN (in Analysis ToolPak) in questo modo:

=RANDBETWEEN(10000000,99999999)

Tuttavia, questo non è ciò che vuole Nancy. I suoi “numeri” casuali possono contenere anche lettere maiuscole e minuscole. Questo diventa un po ‘più appiccicoso.

Esistono, tuttavia, diversi approcci che puoi utilizzare.

Un approccio consiste nel mettere tutti i tuoi possibili caratteri in una singola cella, come B7:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

Assegna a questa cella un nome accattivante, come MySource. È quindi possibile utilizzare una formula come la seguente per restituire la stringa casuale di caratteri:

=MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

& MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)

La formula è lunga; è stato suddiviso in singole righe per chiarezza, ma è ancora un’unica formula. Concatena otto caratteri estratti dalla fonte che hai inserito nella cella B7.

Un altro approccio consiste nel creare una tabella che contenga tutti i caratteri desiderati nella stringa di testo casuale. Inizia mettendo i numeri da 1 a 62 in una colonna, un numero in ogni riga. A sinistra di questi numeri posiziona i tuoi caratteri: A, B, C, D, ecc. (Dovrebbero essere gli stessi caratteri che hai inserito nella cella B7 nella tecnica precedente). Seleziona entrambe le colonne delle 62 righe e assegnagli un nome , come MyTable. È quindi possibile utilizzare la seguente formula per generare i caratteri casuali:

=VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

& VLOOKUP(RANDBETWEEN(1,62),MyTable,2)

Ancora una volta, ricorda che questa è una singola formula, sebbene sia un po ‘più breve della formula precedente.

Ciascuno degli approcci presentati finora ha uno svantaggio: vengono rigenerati ogni volta che il foglio di lavoro viene ricalcolato. Pertanto, è difficile avere una singola stringa casuale generata che non cambierà regolarmente. Il modo migliore per aggirare questo problema è utilizzare una macro, ma non è necessario utilizzare una funzione definita dall’utente. Perché? Perché anch’esso cambierebbe il suo risultato ogni volta che il foglio di lavoro veniva ricalcolato.

Invece, è necessaria una macro che inserisca le stringhe casuali nella cartella di lavoro a partire da una posizione di cella specifica. Quello che segue è un esempio di tale macro:

Sub MakeRandom()

Dim J As Integer     Dim K As Integer     Dim iTemp As Integer     Dim sNumber As String     Dim bOK As Boolean

Range("D4").Activate     Randomize     For J = 1 To 50         sNumber = ""

For K = 1 To 8             Do                 iTemp = Int((122 - 48 + 1) * Rnd + 48)

Select Case iTemp                     Case 48 To 57, 65 To 90, 97 To 122                         bOK = True                     Case Else                         bOK = False                 End Select             Loop Until bOK             bOK = False             sNumber = sNumber & Chr(iTemp)

Next K         ActiveCell.Value = sNumber         ActiveCell.Offset(1, 0).Select     Next J End Sub

Esegui la macro e qualunque cosa si trovi nelle celle D4: D53 viene sovrascritta dai valori casuali. Se si desidera che i valori vengano scritti in una posizione diversa, modificare l’istruzione Range vicino all’inizio della macro.

_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 (3872) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: