Excel vzorec: Generování náhodných textových řetězců -

Obsah

Obecný vzorec

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

souhrn

Chcete-li vygenerovat seznam náhodných textových řetězců, můžete použít vzorec založený na INDEXU, RANDARRAY a TEXTJOIN. V zobrazeném příkladu je vzorec v D5:

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

kde char je pojmenovaný rozsah B5: B30 obsahující písmena AZ. Vzhledem k tomu, že vzorec je zkopírován dolů do sloupce, vygeneruje nový textový řetězec se 6 znaky na každém řádku.

Vysvětlení

Nové vzorce dynamického pole v aplikaci Excel 365 výrazně usnadňují řešení určitých složitých problémů se vzorci.

V tomto příkladu je cílem vygenerovat seznam náhodných šestimístných kódů. Náhodnost zpracovává funkce RANDARRAY, nová funkce v aplikaci Excel 365. RANDARRAY vrátí 6 náhodných čísel do INDEXU, který poté načte 6 náhodných hodnot z pojmenovaných znaků rozsahu. Výsledky z INDEXU jsou poté zřetězeny společně s funkcí TEXTJOIN.

V zobrazeném příkladu je vzorec v D5:

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

Při práci zevnitř ven se funkce RANDARRAY používá ke generování pole obsahujícího šest náhodných čísel mezi 1-26:

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

Všimněte si, že vrácené pole se bude lišit s každou instancí funkce RANDARRAY. Protože je RANDARRAY nestálá funkce, přepočítá se při každé změně listu.

Toto pole náhodných čísel se vrací přímo do funkce INDEX jako argument řádků:

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

Protože žádáme INDEX o 6 řádků, dostaneme zpět 6 výsledků v takovém poli:

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

Toto pole je vráceno funkci TEXTJOIN jako argument text1:

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

TEXTJOIN je nastaven na použití prázdného řetězce jako oddělovače a na ignorování prázdných hodnot. S touto konfigurací TEXJOIN jednoduše spojí všechny hodnoty dohromady a vrátí 6místný textový řetězec jako „NEUGYC“.

Počítejte znaky programově

Místo pevného kódování velikosti znaků přímo do funkce RANDARRAY můžete pomocí funkce COUNTA spočítat prvky v poli a vrátit tento počet do RANDARRAY:

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

To předpokládá, že znaky neobsahují žádné prázdné buňky.

Generujte znaky programově

Vzhledem k tomu, že písmena AZ mají základní hodnoty číselného kódu, je možné generovat pole znaků použitých k sestavení textových řetězců programově, namísto použití rozsahu. To lze provést pomocí funkce CHAR a funkce SEQUENCE.

Chcete-li vygenerovat pole se všemi velkými písmeny AZ, která se mapují na ASCII 65-90:

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

Generování malých písmen az, která odpovídají ASCII 97-122:

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

Tento kód lze vložit do původního vzorce a nahradit takto „znaky“:

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

Ostatní postavy

Znaky v pojmenovaných znakech rozsahu mohou být cokoli chcete. Pokud přidáte více než 26 znaků (nebo méně), upravte podle potřeby číslo 26 nebo použijte COUNTA, jak je vysvětleno výše.

Bez aplikace 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 této verzi RANDBETWEEN vrací hodnotu mezi 65 a 90 (včetně), která odpovídá hodnotě ASCII pro písmena AZ (velká písmena). Funkce CHAR převádí číselnou hodnotu na písmeno. Jak je uvedeno výše, všechny výsledky jsou zřetězeny společně v jednom textovém řetězci.

Zajímavé články...