Generazione di stringhe casuali di caratteri (Microsoft Excel)
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: