Екцел формула: Генеришите насумичне текстуалне низове -

Генеричка формула

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

Резиме

Да бисте генерисали листу случајних текстуалних низова, можете користити формулу засновану на ИНДЕКС, РАНДАРРАИ и ТЕКСТЈОИН. У приказаном примеру, формула у Д5 је:

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

где је знак означени именовани опсег Б5: Б30 који садржи слова АЗ. Како се формула копира низ колону, она генерише нови текстуални низ од 6 знакова у сваком реду.

Објашњење

Нове формуле динамичких низова у програму Екцел 365 знатно олакшавају решавање одређених незгодних проблема с формулама.

У овом примеру циљ је генерисати листу случајних кодова од 6 знакова. Случајношћу управља функција РАНДАРРАИ, нова функција у програму Екцел 365. РАНДАРРАИ враћа 6 случајних бројева у ИНДЕКС, који затим преузима 6 случајних вредности из именованих знакова опсега. Резултати из ИНДЕКС-а се затим спајају заједно са функцијом ТЕКСТЈОИН.

У приказаном примеру, формула у Д5 је:

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

Радећи изнутра према ван, функција РАНДАРРАИ користи се за генерисање низа који садржи шест случајних бројева између 1-26:

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

Имајте на уму да ће се враћени низ разликовати у зависности од сваке инстанце функције РАНДАРРАИ. Такође, с обзиром на то да је РАНДАРРАИ променљива функција, прерачунаће се са сваком променом радног листа.

Овај низ случајних бројева враћа се директно у функцију ИНДЕКС као аргумент редови:

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

Будући да тражимо ИНДЕКС за 6 редова, добијамо 6 резултата у низу попут овог:

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

Овај низ се враћа функцији ТЕКСТЈОИН као аргумент тект1:

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

ТЕКСТЈОИН је постављен тако да користи празан низ као граничник и да занемарује празне вредности. Са овом конфигурацијом, ТЕКСЈОИН једноставно спаја све вредности и враћа текстуални низ од 6 знакова попут "НЕУГИЦ".

Броји знакове програмски

Уместо да кодирате величину знакова директно у функцију РАНДАРРАИ, можете да користите функцију ЦОУНТА за бројање елемената у пољу и враћање које се рачуна у РАНДАРРАИ:

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

Ово претпоставља да знакови не садрже празне ћелије.

Генеришите знакове програмски

Будући да слова АЗ имају основне нумеричке вредности кода, могуће је генерисати низ знакова који се користе за програмско састављање текстуалних низова, уместо да се користи опсег. То се може урадити помоћу функције ЦХАР и функције СЕКУЕНЦЕ.

Да бисте генерисали низ са великим словима АЗ, која се пресликавају на АСЦИИ 65-90:

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

Да бисте генерисали мала слова аз, која одговарају АСЦИИ 97-122:

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

Овај код се може убацити у оригиналну формулу да би заменио "знакове" овако:

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

Други ликови

Ликови у наведеним опсега карактера може бити било шта желите. Ако додате више од 26 знакова (или мање), прилагодите број 26 према потреби или користите ЦОУНТА како је горе објашњено.

Без програма Екцел 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))

У овој верзији РАНДБЕТВЕЕН враћа вредност између 65 и 90 (укључујући ту вредност) која одговара АСЦИИ вредности за слова АЗ (велика слова). Функција ЦХАР преводи нумеричку вредност у слово. Као и горе, сви резултати су повезани у један текстуални низ.

Занимљиви Чланци...