Excel formula: nejaušu teksta virkņu ģenerēšana -

Vispārēja formula

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

Kopsavilkums

Lai izveidotu nejaušu teksta virkņu sarakstu, varat izmantot formulu, kuras pamatā ir INDEX, RANDARRAY un TEXTJOIN. Parādītajā piemērā formula D5 ir:

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

kur rakstzīmes ir nosaukts diapazons B5: B30 satur burtus AZ. Formulu nokopējot kolonnā, tā katrā rindā ģenerē jaunu teksta virkni ar 6 rakstzīmēm.

Paskaidrojums

Jaunās dinamisko masīvu formulas programmā Excel 365 ļauj daudz vienkāršāk atrisināt noteiktas sarežģītas problēmas ar formulām.

Šajā piemērā mērķis ir izveidot nejaušu 6 rakstzīmju kodu sarakstu. Nejaušību apstrādā funkcija RANDARRAY, jauna funkcija programmā Excel 365. RANDARRAY atgriež 6 nejaušus skaitļus INDEX, kas pēc tam izgūst 6 nejaušas vērtības no nosauktajām diapazona rakstzīmēm. Rezultāti no INDEX tiek apvienoti kopā ar funkciju TEXTJOIN.

Parādītajā piemērā formula D5 ir:

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

Strādājot no iekšpuses uz āru, funkcija RANDARRAY tiek izmantota, lai izveidotu masīvu, kas satur sešus nejaušus skaitļus starp 1-26:

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

Ņemiet vērā, ka atgrieztais masīvs mainīsies atkarībā no katra RANDARRAY funkcijas gadījuma. Tā kā RANDARRAY ir nepastāvīga funkcija, tā tiks pārrēķināta ar katru darblapas izmaiņu.

Šis nejaušo skaitļu masīvs tiek tieši atgriezts funkcijā INDEX kā rindu arguments:

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

Tā kā mēs pieprasām INDEX 6 rindas, mēs iegūstam 6 rezultātus šādā masīvā:

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

Šis masīvs tiek atgriezts TEXTJOIN funkcijā kā arguments text1:

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

TEXTJOIN ir iestatīts izmantot tukšu virkni kā norobežotāju un ignorēt tukšas vērtības. Izmantojot šo konfigurāciju, TEXJOIN vienkārši apvieno visas vērtības kopā un atgriež 6 rakstzīmju teksta virkni, piemēram, "NEUGYC".

Programmiski skaitīt rakstzīmes

Tā vietā, lai burtu lielumu kodētu tieši RANDARRAY funkcijā, varat izmantot funkciju COUNTA, lai saskaitītu masīvā esošos elementus un atgrieztu tos RANDARRAY:

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

Tas pieņem, ka rakstzīmes nesatur tukšas šūnas.

Programmiski ģenerēt rakstzīmes

Tā kā burtiem AZ ir ciparu kodu vērtības, ir iespējams ģenerēt rakstzīmju masīvu, ko izmanto, lai programmatiski apkopotu teksta virknes, nevis izmantotu diapazonu. To var izdarīt ar funkciju CHAR un SEQUENCE.

Lai izveidotu masīvu ar visiem lielajiem burtiem AZ, kas atbilst ASCII 65-90:

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

Lai izveidotu mazos burtus az, kas atbilst ASCII 97-122:

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

Šo kodu var nomest sākotnējā formulā, lai aizstātu šādus apzīmējumus:

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

Citas rakstzīmes

Nosaukto diapazona burtu rakstzīmes var būt jebkas, kas jums patīk. Ja pievienojat vairāk nekā 26 rakstzīmes (vai mazāk), attiecīgi pielāgojiet skaitli 26 vai izmantojiet COUNTA, kā paskaidrots iepriekš.

Bez 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))

Šajā versijā RANDBETWEEN atgriež vērtību starp 65 un 90 (ieskaitot), kas atbilst ASCII vērtībai burtiem AZ (lielie burti). Funkcija CHAR tulko skaitlisko vērtību burtā. Tāpat kā iepriekš, visi rezultāti tiek apvienoti vienā teksta virknē.

Interesanti raksti...