Excel vzorec: Generovanie náhodných textových reťazcov -

Všeobecný vzorec

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

Zhrnutie

Ak chcete vygenerovať zoznam náhodných textových reťazcov, môžete použiť vzorec založený na indexoch INDEX, RANDARRAY a TEXTJOIN. V zobrazenom príklade je vzorec v D5:

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

kde char je pomenovaný rozsah B5: B30 obsahujúci písmená AZ. Keď sa vzorec skopíruje nadol do stĺpca, vygeneruje nový šesťmiestny textový reťazec v každom riadku.

Vysvetlenie

Nové vzorce pre dynamické pole v aplikácii Excel 365 výrazne uľahčujú riešenie určitých zložitých problémov so vzorcami.

V tomto príklade je cieľom vygenerovať zoznam náhodných 6-znakových kódov. Náhodnosťou sa zaoberá funkcia RANDARRAY, nová funkcia v Exceli 365. RANDARRAY vráti 6 náhodných čísel do INDEXU, ktorý potom načíta 6 náhodných hodnôt z pomenovaných znakov rozsahu. Výsledky z INDEXU sú potom zreťazené spolu s funkciou TEXTJOIN.

V zobrazenom príklade je vzorec v D5:

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

Pri práci zvnútra von sa funkcia RANDARRAY používa na vygenerovanie poľa obsahujúceho šesť náhodných čísel medzi 1 - 26:

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

Upozorňujeme, že vrátené pole sa bude líšiť s každou inštanciou funkcie RANDARRAY. Pretože je RANDARRAY nestála funkcia, prepočíta sa to pri každej zmene pracovného hárka.

Toto pole náhodných čísel sa vracia priamo do funkcie INDEX ako argument riadkov:

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

Pretože požadujeme INDEX pre 6 riadkov, dostaneme späť 6 výsledkov v takomto poli:

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

Toto pole sa vráti funkcii TEXTJOIN ako argument text1:

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

TEXTJOIN je nastavený na použitie prázdneho reťazca ako oddeľovača a na ignorovanie prázdnych hodnôt. S touto konfiguráciou TEXJOIN jednoducho spojí všetky hodnoty dohromady a vráti 6-znakový textový reťazec ako „NEUGYC“.

Počítajte znaky programovo

Namiesto pevného kódovania veľkosti znakov priamo do funkcie RANDARRAY môžete pomocou funkcie COUNTA spočítať prvky v poli a tento počet vrátiť do RANDARRAY:

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

To predpokladá, že znaky neobsahujú žiadne prázdne bunky.

Generujte znaky programovo

Pretože písmená AZ majú základné hodnoty číselného kódu, je možné namiesto použitia rozsahu vygenerovať pole znakov použitých na zostavenie textových reťazcov programovo. To je možné vykonať pomocou funkcií CHAR a SEQUENCE.

Generovanie poľa so všetkými veľkými písmenami AZ, ktoré sa mapujú na ASCII 65-90:

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

Pre generovanie malých písmen az, ktoré zodpovedajú ASCII 97-122:

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

Tento kód je možné vložiť do pôvodného vzorca, aby nahradil znaky „takto“:

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

Ostatné postavy

Postavy v pomenované oblasti znakov môže byť čokoľvek chcete. Ak pridáte viac ako 26 znakov (alebo menej), upravte podľa potreby číslo 26 alebo použite COUNTA podľa vyššie uvedeného vysvetlenia.

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

V tejto verzii vracia RANDBETWEEN hodnotu medzi 65 a 90 (vrátane), ktorá zodpovedá hodnote ASCII pre písmená AZ (veľké písmená). Funkcia CHAR prevedie číselnú hodnotu na písmeno. Ako je uvedené vyššie, všetky výsledky sú spojené do jedného textového reťazca.

Zaujímavé články...