Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Codegenerierung

Codegenerierung
09.08.2022 10:22:55
Daniel
Guten Morgen,
hatte mal die Suche bemüht aber nur etwas mit Zufallsbereich und Zahlen gesehen.
Ist sowas mit Excel möglich?
Format:
Alphanumerische Zufallscodes
16-stellige Codes, unter Ausschluß der Zeichen l, I, O, 0
Beispiel: M15n 12tf RX15 h87g
Anfangsbuchstage je Datei immer identisch,
z.B. M für München
14.000 Stück
Gruß Daniel Richter

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Codegenerierung
09.08.2022 10:55:38
Daniel
Hi
schreibe alle erlaubten Zeichen hintereinander in eine Zelle (z.B. A1)
aus dieser Zeichenmenge kannst du dann ein zufälliges Zeichen mit dieser Formel herauslesen: TEIL($A$1;ZUFALLSBEREICH(1;LÄNGE($A$1));1)
dh wenn du 16 Zeichen brauchst, musst du das 16x wiederholen:

="M"&Teil(...)&Teil(...)&Teil(...)...
vielleicht ist es auch möglich, die Wiederholungen zu vermeiden, in dem Textverketten verwendet und eine Matrixschleife, aber mir ist es noch nicht gelungen, dass dann bei jedem Umlauf eine neue Zufallszahl erstellt wird, so dass das immer das selbe Zeichen ergeben hat.
Daher die 16 Wiederholungen.
wenn du die Häufigkeit von bestimmten Zeichen beeinflussen willst, dann kannst das dadurch beeinflussen, dass du die Zeichen mehrfach wiederholst.
Wenn beispielweise willst, dass Ziffern genauso oft vorkommen wie Alpha-Zeichen und du aber 52 Alpha-Zeichen hast (Alphabet in Groß und Klein), dann kannst du jede Ziffer 5x eingeben um auf gleiche Anzahl Zeichen zu kommen.
beachte weiterhin, dass du die Formeln nach dem einfügen kopieren und als Wert einfügen musst, sonst ändern sich die Codes ständig.
Gruß Daniel
Anzeige
AW: Codegenerierung
09.08.2022 10:58:31
Daniel
Ok, das probiere ich aus.
Ich darf aber keine Dubletten haben und ähnliche Zeichen dürften auch nicht verwendet werden: l, I, O, 0
AW: Codegenerierung
09.08.2022 11:08:41
Daniel
Hi
du musst sowieso alle Zeichen, die verwendet werden können, in A1 auflisten, also lass l, I, O, 0 einfach weg.
von "keine Doubletten" stand nichts in deiner Anfrage, daher habe ich das auch nicht berücksichtig.
Gruß Daniel
AW: Codegenerierung
09.08.2022 11:09:41
Daniel
OK, das mit den Dupletten hätte ich reinschreiben sollen.
AW: Codegenerierung
09.08.2022 11:20:40
Daniel
das macht die Sache für Formeln schwierig.
ist VBA eine Option?
Gruß Daniel
AW: Codegenerierung
09.08.2022 11:24:33
Daniel
Ja, wenn ich es könnte, wäre es bestimmt eine Option. Im Endeffekt würde ich gerne ein Excel erstellen, mit dem ich 1-2 mal im Jahr die Codes generieren könnte.
Anzeige
AW: Codegenerierung
09.08.2022 11:45:43
Daniel
Hi
wenn VBA eine Option ist, dann kannst du diese Function verwenden:

Function CodeGenerator(ZulässigeZeichen As String, Länge As Long, Optional DublettenErlaubt As Boolean = True) As String
Dim i As Long
Dim ZZ As String
Dim T As String
ZZ = ZulässigeZeichen
For i = 1 To Länge
If ZZ = "" Then
CodeGenerator = "Code nicht darstellbar"
Exit For
End If
T = Mid(ZZ, WorksheetFunction.RandBetween(1, Len(ZZ)), 1)
CodeGenerator = CodeGenerator & T
If Not DublettenErlaubt Then ZZ = Replace(ZZ, T, "")
Next
End Function
dh diesen Code in ein allgemeines Modul
in A1 oder einer anderen Zelle die erlaubten Zeichen auflisten
in den Zellen dann die Formel: =CodeGenerator($A$1;16;falsch)
Gruß Daniel
Anzeige
AW: Codegenerierung
09.08.2022 12:23:43
Daniel
auf was war das mit den "keine Dubletten" bezogen:
a) sicherstellen, dass sich kein 16-stelliger Code wiederholt
b) in einem Code darf ein Zeichen nur 1x vorkmmen und sich nicht wiederholen
für fall a) brauchst du keine Vorkehrungen treffen. die Wahrscheinlichkeit, dass das Eintritt ist extrem gering
und wenn du sorgen, hast, das kannst du hinterher recht einfach prüfen und dann ggf ein paar neue Codes erstellen, falls doch tatsächlich Codeduplikate vorkommen.
Gruß Daniel
AW: Codegenerierung
09.08.2022 11:00:35
Fennek
Hallo,
hier ein erster Ansatz:

Const Liste As String = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789"
Sub Zufallsstring()
Dim Ret As String
For i = 1 To 4
For ii = 1 To 4
Ret = Ret & Mid(Liste, Rnd() * 57 + 1, 1)
Next ii
Ret = Ret & " "
Next i
Debug.Print Ret
End Sub
mfg
Anzeige
AW: Codegenerierung
09.08.2022 11:45:47
snb

Sub M_snb()
Randomize
Do
y = Int(75 * Rnd)
If y  17 And y  49 And y 

AW: Codegenerierung
09.08.2022 11:55:43
peterk
Hallo
https://www.herber.de/bbs/user/154566.xlsx
In Q1 der Anfangsbuchstabe
in Q2 die Anzahl der Datensätze (notfalls die Formel in Spalte A bis ans Ende ziehen oder löschen (derzeit 14000))
In R1 die gültigen Zeichen
Spalte A in Tabelle 2 als Werte kopieren und Duplikate entfernen (hab es bis jetzt aber nicht geschafft das Excel welche gefunden hätte)
Peter
AW: Codegenerierung
09.08.2022 12:07:36
Rudi
Hallo,
aufgebaut auf Fenneks Code:

Sub CodeGen()
Dim Ret As String, i, ii
Dim objString As Object
Const Liste As String = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789"
Const strSTART As String = "M"    'erster Buchstabe
Set objString = CreateObject("scripting.dictionary")
Do
Ret = strSTART
For ii = 1 To 3
Ret = Ret & Mid(Liste, Rnd() * 57 + 1, 1)
Next ii
Ret = Ret & " "
For i = 1 To 3
For ii = 1 To 4
Ret = Ret & Mid(Liste, Rnd() * 57 + 1, 1)
Next ii
Ret = Ret & " "
Next i
objString(Ret) = 0
Loop While objString.Count 
Gruß
Rudi
Anzeige
AW: Codegenerierung
09.08.2022 12:45:19
snb
Und nun nur Unikate:

Sub M_snb()
Randomize
Do
y = Int(75 * Rnd)
If (y  17 And y  49 And y 

AW: Codegenerierung
10.08.2022 09:58:20
snb
Oder

Sub M_snb()
Randomize
Do
y = Int(77 * Rnd) + 47
If Chr(y) Like "[a-z A-H J-N P-Z 1-9]" Then c00 = Replace(c00, Chr(y), "") & Chr(y)
Loop Until Len(c00) = 16
MsgBox Format(c00, "@@@@ @@@@ @@@@ @@@@")
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige