
Üldine valem
=INDEX(characters,RANDARRAY(n,1,1,count,TRUE))
Kokkuvõte
Juhuslike tekstistringide loendi loomiseks võite kasutada valemeid, mis põhinevad INDEX, RANDARRAY ja TEXTJOIN. Näidatud näites on valem D5-s:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
kus tähemärgid on nimega vahemik B5: B30, mis sisaldab tähti AZ. Kui valem kopeeritakse veerust alla, genereerib see igale reale uue 6-märgise tekstistringi.
Selgitus
Exceli 365 uued dünaamilise massiivi valemid muudavad valemitega teatud keeruliste probleemide lahendamise palju lihtsamaks.
Selles näites on eesmärk luua juhuslike 6-märgiliste koodide loend. Juhuslikkusega tegeleb funktsioon RANDARRAY, uus funktsioon Excelis 365. Funktsioon RANDARRAY tagastab INDEXile 6 juhuslikku arvu, mis siis otsib 6 juhuslikku väärtust nimetatud vahemiku tähemärkidest. Seejärel liidetakse INDEXi tulemused koos funktsiooniga TEXTJOIN.
Näidatud näites on valem D5-s:
=TEXTJOIN("",1,INDEX(chars,RANDARRAY(6,1,1,26,TRUE)))
Seestpoolt töötades kasutatakse funktsiooni RANDARRAY massiivi loomiseks, mis sisaldab kuut juhuslikku arvu vahemikus 1-26:
RANDARRAY(6,1,1,26,TRUE) // return array like (14;5;21;7;25;3)
Pange tähele, et tagastatav massiiv varieerub funktsiooni RANDARRAY iga eksemplari korral. Kuna RANDARRAY on kõikuv funktsioon, arvutab see iga töölehe muudatusega ümber.
See juhuslike arvude massiiv tagastatakse ridaargumendina otse funktsioonile INDEX:
INDEX(chars,(14;5;21;7;25;3))
Kuna me küsime INDEXilt 6 rida, saame sellise massiivi abil tagasi 6 tulemust:
("N","E","U","G","Y","C")
See massiiv tagastatakse funktsioonile TEXTJOIN argumendina text1:
=TEXTJOIN("",1,("N","E","U","G","Y","C")) // returns "NEUGYC"
TEXTJOIN on seatud kasutama eraldajana tühja stringi ja eirama tühje väärtusi. Selle konfiguratsiooni korral liidab TEXJOIN kõik väärtused kokku ja tagastab 6-märgise tekstistringi nagu "NEUGYC".
Loe tähed programmiliselt
Selle asemel, et kodeerida tähemärkide suurus otse funktsiooni RANDARRAY, saate funktsiooni COUNTA abil massiivis olevad elemendid kokku lugeda ja arvud RANDARRAY-le tagastada:
RANDARRAY(6,1,1,COUNTA(chars),TRUE)
See eeldab, et tähemärgid ei sisalda ühtegi tühja lahtrit.
Looge tähed programmiliselt
Kuna AZ-tähtedel on numbrilised koodiväärtused, on vahemiku kasutamise asemel võimalik genereerida tekstistringide programmeerimiseks kasutatavate märkide massiiv. Seda saab teha funktsiooniga CHAR ja SEQUENCE.
Massiivi genereerimiseks kõigi suurtähtedega AZ, mis kaardistatakse ASCII 65-90:
=CHAR(SEQUENCE(26,1,65,1)) // returns ("A","B","C",… )
Väikeste tähtede az genereerimiseks, mis vastavad standardile ASCII 97-122:
=CHAR(SEQUENCE(26,1,97,1)) // returns ("a","b","c",… )
Selle koodi saab algsesse valemisse lisada, et asendada järgmisi tähemärke:
=TEXTJOIN("",1,INDEX(CHAR(SEQUENCE(26,1,65,1)),RANDARRAY(6,1,1,26,TRUE)))
Muud tegelased
Märki nimega vahemik tähemärki võib olla ükskõik mida soovid. Kui lisate rohkem kui 26 tähemärki (või vähem), reguleerige vastavalt numbrit 26 või kasutage COUNTA, nagu eespool selgitatud.
Ilma Excel 365-ta
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))
Selles versioonis tagastab RANDBETWEEN väärtuse vahemikus 65–90 (kaasa arvatud), mis vastab tähtede AZ (suurtähed) ASCII väärtusele. Funktsioon CHAR teisendab arvulise väärtuse täheks. Nagu ülalpool, liidetakse kõik tulemused ühte tekstistringi.