
Bendroji formulė
=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))
Santrauka
Norėdami sugeneruoti atsitiktinių teksto eilučių sąrašą, galite naudoti formulę, pagrįstą INDEX, RANDARRAY ir TEXTJOIN. Parodytame pavyzdyje formulė D5 yra:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
kur simboliai yra pavadintas diapazonas B5: B30 su raidėmis AZ. Kai formulė nukopijuojama stulpelyje, kiekvienoje eilutėje sukuriama nauja 6 simbolių teksto eilutė.
Paaiškinimas
Naujos dinaminės masyvo formulės „Excel 365“ leidžia daug lengviau išspręsti tam tikras sudėtingas formulių problemas.
Šiame pavyzdyje tikslas yra sukurti atsitiktinių 6 simbolių kodų sąrašą. Atsitiktinumą tvarko funkcija RANDARRAY - nauja „Excel 365“ funkcija. RANDARRAY grąžina 6 atsitiktinius skaičius į INDEX, kuris tada nuskaito 6 atsitiktines reikšmes iš pavadintų diapazono simbolių. Tada „INDEX“ rezultatai sujungiami kartu su funkcija TEXTJOIN.
Parodytame pavyzdyje formulė D5 yra:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
Dirbant iš vidaus, funkcija RANDARRAY naudojama sukurti masyvą, kuriame yra šeši atsitiktiniai skaičiai tarp 1-26:
RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)
Atkreipkite dėmesį, kad grąžinamas masyvas skirsis priklausomai nuo kiekvieno RANDARRAY funkcijos. Be to, kadangi „RANDARRAY“ yra nepastovi funkcija, ji bus perskaičiuojama su kiekvienu darbalapio pakeitimu.
Šis atsitiktinių skaičių masyvas grąžinamas tiesiai į INDEX funkciją kaip eilutės argumentą:
INDEX(chars,(14;5;21;7;25;3))
Kadangi mes prašome INDEX 6 eilučių, mes gauname 6 tokius masyvo rezultatus:
("N","E","U","G","Y","C")
Šis masyvas grąžinamas į TEXTJOIN funkciją kaip argumentas text1:
=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"
„TEXTJOIN“ nustatyta naudoti tuščią eilutę kaip skiriklį ir nepaisyti tuščių verčių. Naudodamas šią konfigūraciją, TEXJOIN paprasčiausiai sujungia visas vertes ir pateikia 6 simbolių teksto eilutę, pvz., „NEUGYC“.
Skaičiuokite simbolius programiškai
Užuot užrašę simbolių dydį tiesiai į funkciją RANDARRAY, galite naudoti funkciją COUNTA, kad suskaičiuotumėte masyvo elementus ir grąžintumėte juos į RANDARRAY:
RANDARRAY(6,1,1,COUNTA(chars),TRUE)
Tai daro prielaidą, kad simboliuose nėra tuščių langelių.
Programiškai generuoti simbolius
Kadangi raidės AZ turi skaitines kodo reikšmes, galima sukurti simbolių masyvą, naudojamą programinėms teksto eilutėms surinkti, užuot naudojus diapazoną. Tai galima padaryti naudojant funkciją CHAR ir SEQUENCE.
Norėdami sukurti masyvą su visomis didžiosiomis raidėmis AZ, susietą su ASCII 65-90:
=CHAR(SEQUENCE(26,1,65,1)) // returns ("A","B","C",… )
Norėdami sukurti mažąsias raides az, kurios atitinka ASCII 97–122:
=CHAR(SEQUENCE(26,1,97,1)) // returns ("a","b","c",… )
Šį kodą galima įrašyti į pradinę formulę, kad būtų pakeisti tokie „simboliai“:
=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))
Kiti personažai
Pavadintų diapazono simbolių simboliai gali būti bet kokie jums patinkantys dalykai . Jei pridedate daugiau nei 26 simbolius (arba mažiau), atitinkamai pakoreguokite skaičių 26 arba naudokite COUNTA, kaip paaiškinta aukščiau.
Be „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))
Šioje versijoje RANDBETWEEN pateikia vertę nuo 65 iki 90 (imtinai), kuri atitinka raidžių AZ (didžiosios raidės) ASCII vertę. Funkcija CHAR skaitmeninę vertę paverčia raide. Kaip aukščiau, visi rezultatai sujungiami į vieną teksto eilutę.