Excel képlet: Véletlenszerű szöveges karakterláncok létrehozása -

Általános képlet

=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))

Összegzés

A véletlenszerű szöveges karakterláncok listájának létrehozásához az INDEX, a RANDARRAY és a TEXTJOIN alapú képletet használhatja. A bemutatott példában a D5 képlete a következő:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

ahol a karakterek az AZ betűket tartalmazó B5: B30 nevű tartomány. Amint a képletet lefelé másoljuk az oszlopban, minden sorban új 6 karakteres szöveg karakterláncot generál.

Magyarázat

Az Excel 365 új dinamikus tömbképletei sokkal megkönnyítik bizonyos trükkös problémák megoldását a képletekkel.

Ebben a példában a cél egy véletlenszerű 6 karakteres kódok listájának létrehozása. A véletlenszerűséget a RANDARRAY függvény kezeli, egy új függvény az Excel 365-ben. A RANDARRAY 6 véletlen számot ad vissza az INDEX-hez, amely aztán 6 véletlenszerű értéket kap le a megnevezett tartományjelekből. Az INDEX eredményeit ezután összefűzzük a TEXTJOIN függvénnyel együtt.

A bemutatott példában a D5 képlete a következő:

=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))

Belülről kifelé haladva a RANDARRAY függvény segítségével tömböt lehet létrehozni, amely hat véletlenszerű számot tartalmaz 1-26 között:

RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)

Vegye figyelembe, hogy a visszaküldött tömb a RANDARRAY függvény minden egyes példányától függ. Továbbá, mivel a RANDARRAY volatilis függvény, minden munkalapváltozással újraszámolja.

Ez a véletlenszám-tömb közvetlenül az INDEX függvénybe kerül vissza a sorok argumentumaként:

INDEX(chars,(14;5;21;7;25;3))

Mivel az INDEX-től 6 sort kérünk, 6 eredményt kapunk egy ilyen tömbben:

("N","E","U","G","Y","C")

Ez a tömb visszatér a TEXTJOIN függvényhez text1 argumentumként:

=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"

A TEXTJOIN úgy van beállítva, hogy üres karakterláncot használjon elválasztóként, és az üres értékeket figyelmen kívül hagyja. Ezzel a konfigurációval a TEXJOIN egyszerűen összefűzi az összes értéket, és egy 6 karakteres szöveges karakterláncot ad vissza, például "NEUGYC".

Számolja a karaktereket programozottan

Ahelyett, hogy a karakterek méretét közvetlenül a RANDARRAY függvénybe kódolná, a COUNTA funkcióval megszámolhatja a tömb elemeit, és visszaadhatja azokat a RANDARRAY-ra:

RANDARRAY(6,1,1,COUNTA(chars),TRUE)

Ez feltételezi, hogy a karakterek nem tartalmaznak üres cellákat.

Generálja a karaktereket programozottan

Since the letters A-Z have underlying numeric code values, it is possible to generate the array of characters used to assemble text strings programmatically, instead of using a range. This can be done with the CHAR function and the SEQUENCE function.

To generate an array with all uppercase letters A-Z, which map to ASCII 65-90:

=CHAR(SEQUENCE(26,1,65,1)) // returns ("A","B","C",… )

To generate lowercase letters a-z, which correspond to ASCII 97-122:

=CHAR(SEQUENCE(26,1,97,1)) // returns ("a","b","c",… )

This code can be dropped into the original formula to replace "chars" like this:

=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))

Other characters

The characters in the named range chars can be anything you like. If you add more than 26 characters (or fewer) adjust the number 26 as appropriate, or use COUNTA as explained above.

Without Excel 365

It is possible to generate random text strings without Excel 365, but the formula is more tedious and redundant. Since we don't have a good way to get 6 random numbers all at once, we use the RANDBETWEEN function to get one random value at a time:

=INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))& INDEX(chars,RANDBETWEEN(1,26))

This formula uses the INDEX function to retrieve one random value at a time from the named range chars, and the 6 results are concatenated together into a single text string. Line breaks added for readability.

It is also possible to generate values A-Z directly with CHAR and RANDBETWEEN like this:

=CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))& CHAR(RANDBETWEEN(65,90))

Ebben a verzióban a RANDBETWEEN 65 és 90 (beleértve) értéket ad vissza, amely megfelel az AZ betűk ASCII értékének. A CHAR függvény a számértéket betűvé alakítja. A fentiekhez hasonlóan az összes eredmény összefűzve egyetlen szöveges karaktersorozatba kerül.

érdekes cikkek...