Alphanummerische Codes erzeugen

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Vielleicht geht es eleganter, aber mit dieser simpel gestrickten Formel bekommst Du das gewollte Ergebnis.
Ich hoffe Du hast Excel 2007 oder 2010, sonst wird es etwas komplizierter, da es vorher ZUFALLSBEREICH noch nicht gab. Nicht erschrecken wegen der Länge, das ist sechsmal der gleiche Schnipsel.
Um die Häufigkeit Zahl/ Buchstabe zu beeinflussen brauchst Du nur die 0,5 gegen 0 (Zahl) oder gegen 1 (Buchstabe) zu "verschieben":
=ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90)))&ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90)))&ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90)))
Als Code ist es wohl besser lesbar (hoffe ich):

=ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90)))&ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90)))&ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) & ZEICHEN(WENN(ZUFALLSZAHL()>0,5;ZUFALLSBEREICH(48;57);ZUFALLSBEREICH(65;90))) 
Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
Oubyi, UserMod Light  15.02.2011, 19:34

Zumindest ist es als Code besser kopierbar.
Diese Formel kannst Du in eine Zelle schreiben und dann 'runterkopieren.
Mit F9 ändern sich alle Zahlen.
Um sich zu verwenden kannst Du sie am besten kopieren und dann mit Inhalte einfügen... / Werte in eine neu Spalte einfügen.
Klappt es?

0
Iamiam  16.02.2011, 00:41
@Oubyi, UserMod Light

ich dachte, ich kanns kürzer, aber nachdem ich das Missverständnis mit den Ziffern korrigiert hatte, ists doch länger geworden, wenn auch nur knapp. xls2003 akzeptiert übrigens Deine Formel! Nur die Häufigkeit der Verteilung müsstest Du noch anpassen, damits wirklich "zufällig" wird.

0

Probiers mal mit =ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26))&ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26))&ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26))&ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26))&ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26))&ZEICHEN(65+GANZZAHL(ZUFALLSZAHL()26)) eine Zelle kopieren, eine ganze Spalte markieren und einfügen. In xls 2003 rd. 65.000 pro Spalte. Spalte kopieren, in andere Spalte Bearbeiten-inhalte einfügen- Werte. Also 17-18 Spalten Hab nicht ausprobiert, ob xls das vom Umfang her verkraftet, evtl auf mehrere Dateien verteilen.

Iamiam  16.02.2011, 00:17

Unter Einbeziehung von Ziffern:

=ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36,3;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))

hier sind auch die Ziffern 0-9 und jedes Zeichen in gleicher Häufigkeit (1/(26+10) vertreten.

0
Iamiam  16.02.2011, 00:24

irgendwie ist da bei der Formel oben eine 36,3 anstelle 36 reingekommen, ist zwar kein großer fehler, aber der Ordnung halber: die Formel lautet richtig:

=ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+GANZZAHL(ZUFALLSZAHL()26);48+GANZZAHL(ZUFALLSZAHL()10)))

0
Iamiam  16.02.2011, 00:30
@Iamiam

da werden von GF die ganzen Malzeichen-Sterne geschluckt, aber die Fehler werden von xls richtig korrigiert, wenn man das lässt!

0
Iamiam  16.02.2011, 08:55
@Iamiam

es geht noch ein bisschen kürzer (einmal Ganzzahl() ausgeklammert:

=ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))&ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))&ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))&ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))&ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))&ZEICHEN(GANZZAHL(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10)))

Wie gesagt, GF(=Großer Fehler?) verschluckt das Malzeichen nach Zufallszahl(), aber das ist die erste Excel-Fehlerkorrektur-Option, diese also annehmen.

Es geht auch ganz ohne Ganzzahl (kürzeste Fassung), aber ich vermute, dass sich dann die Häufigkeit von A und Z und die von 0 und 9 unterscheiden.

=ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))&ZEICHEN(WENN(ZUFALLSZAHL()>10/36;65+ZUFALLSZAHL()26;48+ZUFALLSZAHL()10))

0
Iamiam  16.02.2011, 09:34
@Iamiam

Die Funktion =Zeichen(..) generiert tatsächlich die Ganzzahl selbst, es geht also die letzte (und kürzeste) Fassung. War selbst ganz erstaunt drüber! (bei je 1000-fachem Auftreten kaum Unterschiede)

0
Iamiam  16.02.2011, 10:07
@Iamiam

ist Dir bewusst, dass bei 1 Mio ausgegebenen Zahlen und 2,18E+09 Möglichkeiten Du ca 500 Doppel bekommst?

Wenn Du das nicht willst, müsstest Du noch eine Zählenwenn-Spalte daneben machen, die Dir anzeigt, wann wein Wert zum zweitenmal auftritt!

(diesen 2. dann ausschließen) zB so, Formel in Z.3, Liste beginne in A1:

=zählenwenn(A$1:A3;A3)-1

das ergibt Dir 0 bei einfachem Auftreten, die Zahl der Wiederholungen bei mehrfachem Auftreten.

Kreierst Du nun ein benutzerdefiniertes Format wie zB.

0;[Rot]-0;[Farbe7]—

und fett, so erhältst Du magentafarbene, ansonsten unauffällige Langstriche beim einfachen Auftreten und eine sichtbare 1 beim Doppel bzw 2 beim Tripel Kannst das natürlich auch über ein benutzerdefiniertes Zellformat machen oder beides! bei mehreren Spalten alle Spalten einbeziehen!

0
Oubyi, UserMod Light  16.02.2011, 17:44
@Iamiam

DAS ist auf jeden Fall zu beachten. Ein WICHTIGER Einwand. Mal sehen ob es noch eine Rückmeldung gibt.
Um Doppelter Werte einmalig aus einer Liste zu entfernen nutze ICH immer den Spezialfilter:
Spalte markieren/ Spezialfilter/ Häkchen bei keine Duplikate / Gefilterte Daten kopieren und in eine leere Spalte einfügen/ Fertig.

0
Iamiam  19.02.2011, 15:51
@Iamiam

Die Aufgabenstellung hat mich nochmals interessiert, deshalb nachgegrast: Habe mit der Formel eine ganze Spalte gefüllt: kein Problem. Spalte kopiert und als Werte eingefügt: xl braucht sehr lange, um das umzusetzen, geht aber. Bei jeder Spalte länger! Bis P:P, da warens gut 3 min. für diese Aktion. Andererseits habe ich mich bei der Zahl der Doppel verrechnet. Da Statistik aber ohnehin nicht meine Stärke ist: keine neue Aussage. Die Kontrollformel (die ich doch brauche, weil das Spezialfilter ja nur eine Spalte abdeckt) in Q1:

=ZÄHLENWENN($A:$A:$P:$P;A1)-1

aber ging überhaupt nicht für eine ganze Spalte einzufügen! Habs für mehrere Zeilen gemacht, da ists kein Problem.

Die Datei hat im Endeffekt gut 25 MB.

Ich genke, da wäre doch ein Makro besser, das jeweils vielleicht 100 Codes neue generiert, gleich kontrolliert und dann einträgt. Man braucht normalerweise ja nicht alle Zahlen auf einmal!

0