Generer tilfældige tekststrenge – password generator

Generisk formel

=INDEKS(tegn;SLUMPMATRIX(n;1;1;antal;SAND))

Resumé

For at generere en liste over tilfældige tekststrenge kan du bruge en formel baseret på INDEKS, SLUMPMATRIX og TEKST.KOMBINER. I det viste eksempel er formlen i C2:

=TEKST.KOMBINER("";SAND;INDEKS(tegn;SLUMPMATRIX(6;1;1;9;SAND)))

hvor tegn er det navngivne område A2:A11, der indeholder bogstaverne A-J (det kan selvfølgelig udvides til at omfatte hele alfabetet, samt numeriske tegn og specialtegn). Efterhånden som formlen kopieres ned i kolonnen, genererer den en ny 6-tegns tekststreng i hver række.

Forklaring

De nye dynamiske matrixformler i Excel 365 gør det meget nemmere at løse visse vanskelige problemer med formler.

I dette eksempel er målet at generere en liste over tilfældige koder på 6 tegn. Tilfældigheden håndteres af funktionen SLUMPMATRIX, en ny funktion i Excel 365. SLUMPMATRIX returnerer 6 tilfældige tal til INDEKS, som derefter henter 6 tilfældige værdier fra det navngivne interval tegn. Resultaterne fra INDEKS kædes derefter sammen med funktionen TEKST.KOMBINER.

I det viste eksempel er formlen i C2:

=TEKST.KOMBINER("";SAND;INDEKS(tegn;SLUMPMATRIX(6;1;1;9;SAND)))

Hvis vi arbejder os indefra og ud, bruges funktionen SLUMPMATRIX til at generere en matrix, der indeholder seks tilfældige tal mellem 1-9:

SLUMPMATRIX(6;1;1;9;SAND) // returner en matrix som {9;5;2;7;5;3}

Bemærk, at det returnerede array vil variere med hver forekomst af funktionen SLUMPMATRIX. Fordi SLUMPMATRIX er en flygtig funktion, genberegnes den med hver ændring af regneark.

Denne matrix af tilfældige tal returneres direkte til funktionen INDEKS som række argumentet:

INDEKS(tegn;{9;5;2;7;5;3})

Fordi vi beder INDEKS om 6 rækker, får vi 6 resultater tilbage i et array som dette:

{"I","E","B","G","E","C"}

Dette array returneres til funktionen TEKST.KOMBINER som argumentet tekst1-:

=TEKST.KOMBINER("";1;{"I","E","B","G","E","C"}) // returnerer ”I,E,B,G,E,C”

TEKST.KOMBINER er indstillet til at bruge en tom streng som skilletegn og til at ignorere tomme værdier. Med denne konfiguration sammenkæder TEKST.KOMBINER simpelthen alle værdier og returnerer en 6-tegns tekststreng som “IEBGEC”.

Tæl tegn som et program

I stedet for at hardkode størrelsen af tegn direkte i funktionen SLUMPMATRIX, kan du bruge funktionen TÆLV til at tælle elementerne i arrayet og returnere det tæller til SLUMPMATRIX:

SLUMPMATRIX(6;1;1;TÆLV(tegn)

Dette antager, at tegn ikke indeholder tomme celler.

Generer tegn som et program

Da bogstaverne A-Z har underliggende numeriske kodeværdier, er det muligt at generere den række af tegn, der bruges til at samle tekststrenge som et program, i stedet for at bruge et interval. Dette kan gøres med funktionen TEGN og funktionen SEKVENS.

Sådan genereres et array med alle store bogstaver A-Z, som er knyttet til ASCII 65-90:

=TEGN(SEKVENS(26;1;65;1)) // returnerer {"A","B","C",...}

Sådan genererer du små bogstaver a-z, som svarer til ASCII 97-122:

=TEGN(SEKVENS(26;1;97;1)) // returnerer {"a","b","c",...}

Denne kode kan indsættes i den originale formel for at erstatte tegn som dette:

=TEKST.KOMBINER("";1;INDEKS(TEGN(SEKVENS(26;1;65;1));SLUMPMATRIX(6;1;1;26;SAND)))

Andre tegn

Karaktererne i de navngivne rækketegn kan være alt, hvad du foretrækker. Hvis du tilføjer mere end 26 tegn (eller færre), justeres tallet 26 efter behov, eller brug TÆLV som forklaret ovenfor.

Uden Excel 365

Det er muligt at generere tilfældige tekststrenge uden Excel 365, men formlen er mere kedelig og gentages. Da vi ikke har en god måde at få 6 tilfældige tal på én gang, bruger vi funktionen SLUMPMELLEM til at få en tilfældig værdi ad gangen:

=INDEKS(tegn;SLUMPMELLEM(1;26))&
INDEKS(tegn;SLUMPMELLEM(1;26))&
INDEKS(tegn;SLUMPMELLEM(1;26))&
INDEKS(tegn;SLUMPMELLEM(1;26))&
INDEKS(tegn;SLUMPMELLEM(1;26))&
INDEKS(tegn;SLUMPMELLEM(1;26))

Denne formel bruger funktionen INDEKS til at hente én tilfældig værdi ad gangen fra det navngivne interval tegn, og de 6 resultater kædes sammen til en enkelt tekststreng. Linjeskiftet er tilføjet for læsbarheden skyld.

Det er også muligt at generere værdier A-Z direkte med TEGN og SLUMPMELLEM sådan her:

=TEGN(SLUMPMELLEM(65;90))&
TEGN(SLUMPMELLEM(65;90))&
TEGN(SLUMPMELLEM(65;90))&
TEGN(SLUMPMELLEM(65;90))&
TEGN(SLUMPMELLEM(65;90))&
TEGN(SLUMPMELLEM(65;90))

I denne version returnerer SLUMPMELLEM en værdi mellem 65 og 90 (inklusive), der svarer til ASCII-værdien for bogstaverne A-Z (store bogstaver). Funktionen TEGN oversætter den numeriske værdi til et bogstav. Som ovenfor er alle resultater sammenkædet i en enkelt tekststreng.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *