Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
668to672
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
668to672
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Namenskürzel ohne Zahlen generieren...

Namenskürzel ohne Zahlen generieren...
21.09.2005 12:36:24
NIKI
Geehrtes Forum,
Aus einer Liste mit 3000 Namen sollen Kürzel für jeden Namen generiert werden.
Leider dürfen dafür keine Zahlen verwendet werden. Es sollen nur Buchstaben aus dem Nachnamen, bzw. wenn diese nicht genügen, Buchstaben aus dem Vornamen verwendet werden.
Es darf keine doppelten Einträge geben. Ist das mit der Anzahl von 4 Buchstaben eines Kürzels zu schaffen?
Hat vielleicht jemand schon einmal eine vba Lösung für dieses Problem (ähnliches) gesehen und in Erinnerung?
Vielen Dank!

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

Betreff
Datum
Anwender
Anzeige
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 13:04:01
Leo
Hi,
bei 4 Zeichen gibt es genau 24 eindeutige Kombinationen, deutlich zu wenig für deinen Plan. Deine Kürzel müssen min. 7 Zeichen haben.
mfg Leo
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 13:25:40
EtoPHG
Hallo Nicki,
Mein Vor-Antworter hat wohl nicht so gut aufgepasst in der Statistik/Kombinatorik
Bei n=26 Buchstaben und einem geordneten subset von k=4 ergeben sich 358'800 mögliche Kombinationen [Formel = n!/(n-k)!]
Das dürfte für 3000 Namen reichen. Da ja Namen sicher doppelt vorkommen, müsste man sich einen Algorithmus überlegen, wie man denen beikommen kann.
Gruss Hansueli
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 13:37:03
Leo
Hi,
ich habe Null Ahnung von Statistik/Kombinatorik, aber dennoch ist mir nicht klar, wie
aus 4 Zeichen soviele Kombinationen erzeugt werden können. Bitte um Aufklärung, am
besten mit Beispiel.
mfg leo
Anzeige
Alles klar, ziehe die Frage zurück oT
21.09.2005 13:39:24
Leo
l
AW: Alles klar, ziehe die Frage zurück oT
21.09.2005 14:03:05
NIKI
Danke an euch beide für eure zeit schon mal, also kombinationstechnisch gehts sich aus, (denke ich hab zweideutig formuliert, aber ich meinete die variante mit den 26 buchstaben pro stelle). Tatsächlich sollte jeder buchstabe des alphab. ja mal vorkommen bei 3000 namen, manche häufiger als andere wie z.b. x,y usw.
Nun müsste es doch schaffbar sein, einen code zu konstruieren der sich die ersten 4 stellen des nachnamens und dann, sofern deiese 4 stellige kombi bereits vorkommt, den nächsten buchstaben nimmt, bis wieder eine einmalige kombi entsteht...?!
Danke an alle!
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 14:04:41
Heiko
Hallo Niki,
nettes Mittagspausenproblem und wenn unser sche.. Server nicht gerade abgestürzt wäre hättest du die Antwort auch schon früher.
Schau mal in der Beispieltabelle nach, wenn du da die Namen und Vornamen reinkopierst (wichtig ab Zeile 2 also Überschriften drin alssen) und dann das Makro KuerzelZufallMit4Stellen oder KuerzelZufallMit3Stellen (Mit ALT + F8) startest wird die eine Liste entweder mit 4 oder 3 Zeichen generiert.
Dabei werden nur Buchstaben aus dem Nachnamen genommen, wenn das nicht klappen sollte, nochmal melden.
https://www.herber.de/bbs/user/26808.xls
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 14:11:22
NIKI
Danke dir heiko, ich schau mir das jetzt mal in ruhe an, unsre server spinnen auch!
Gruß aus Wien!
Heiko?
21.09.2005 14:29:17
NIKI
hallo heiko, ich bekomm nen laufzeitfehler, wenn das makro aus personl.xls gestartet werden soll, das hab ich bei mir nicht...hast noch zeit?
lngLastRow = Application.Run("Personl.xls!GetLastRow")
AW: Heiko?
21.09.2005 14:40:31
Heiko
Hallo Niki,
mein Fehler, ist ne Function in meiner Personl.xls.
Ersetze diese Zeile:
lngLastRow = Application.Run("Personl.xls!GetLastRow")
mit dieser Zeile:
lngLastRow = ActiveSheet.Cells(65536, 1).End(xlUp).Row
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
Zuerst mal Kompliment...
21.09.2005 15:00:51
NIKI
Hallo Heiko...wahnsinn was du da gezimmert hast, finds auch lustig dass das NUR ein nettes problemchen in der mittagspause für dich ist...Kompliment auch von meiner Abteilungsleiterin, Sie ist stark beeindruckt...mir ist schon klar das ich hier oftmals große sachen nachfrage, aber ich bin natürlich so ehrlich (abgesehen davon das mir das eh niemand glauben würde) immer zu sagen, woher und von wem ich die lösung oder anregung bekommen habe...
trotzdem gibts probleme: der ersatz des codes aus der personl.xls durch deine gesendete zeile hat tadellos funktioniert, es rennt also alles,
aber das ganze hat so eher passwortcharackter...
Optimal wäre eine nachvollziehbare logik (ohne zufallskombination) in der art von "wenn die ersten drei stellen gleich sind, nimm den 4 buchstaben, wenn wieder gleich den fünften, wie das folgende shema...so wäre auch bei neueintritten von mitarbeitern ein neues kürzel zu vergeben ohne das sich die anderen namenskürzel der liste ändern..
ULrich Ulr
ULrich Uli
Ulrich Ulc
ULrich Ulh
ULrich Uri
Ulrich Urc
ulrich Urh
Das ist schon keine bitte mehr, ich weiß, aber was sagst d dazu, generell machbar?
In tiefster demut, lg
Anzeige
AW: Heiko?
21.09.2005 15:00:08
Heiko
Hallo Niki,
hier nochmal ne bessere Version, da sind die Buchstaben nicht mehr so kaotisch.
https://www.herber.de/bbs/user/26810.xls
Gruß Heiko

PS: Rückmeldung wäre nett !
AW: Namenskürzel ohne Zahlen generieren...
21.09.2005 15:20:35
Heinz
Hallo NIKI,
hier ein Versuch mit 4 Stellen. Ich habe das mit über 4000 Namen getestet.
Zuerst hatte ich nur die ersten vier Stellen, dann die ersten drei + die jeweils nächsten des Namens und Vornamens. Eas gab aber immer noch ca. 300 Fehler.
Mit der vorliegenden Version habe ich noch drei. Vielleicht kommst du mit deinen Daten durch?

Sub CodeErstellen()
Dim lz%, z As Range, cod$, erledigt As Boolean, gef As Range, i%
lz = Cells(Rows.Count, 1).End(xlUp).Row
For Each z In Range("A2:A" & lz)
erledigt = False
cod = UCase(Left(z.Value & z.Offset(0, 1).Value, 4))
Set gef = Range("C:C").Find(cod)
If gef Is Nothing Then
z.Offset(0, 2).Value = cod
erledigt = True
Else
For i = 5 To Len(z.Value & z.Offset(0, 1).Value)
cod = UCase(Left(z.Value & z.Offset(0, 1).Value, 3) & Mid(z.Value & z.Offset(0, 1).Value, i, 1))
Set gef = Range("C:C").Find(cod)
If gef Is Nothing Then
z.Offset(0, 2).Value = cod
erledigt = True
Exit For
End If
Next i
If erledigt = False Then
For i = 2 To Len(z.Value & z.Offset(0, 1).Value)
cod = UCase(Left(z.Value & z.Offset(0, 1).Value, 1) & Mid(z.Value & z.Offset(0, 1).Value, 3, 2) & Mid(z.Value & z.Offset(0, 1).Value, i, 1))
Set gef = Range("C:C").Find(cod)
If gef Is Nothing Then
z.Offset(0, 2).Value = cod
erledigt = True
Exit For
End If
Next i
End If
If erledigt = False Then
For i = 4 To Len(z.Value & z.Offset(0, 1).Value)
cod = UCase(Left(z.Value & z.Offset(0, 2).Value, 1) & Mid(z.Value & z.Offset(0, 1).Value, 4, 1) & Mid(z.Value & z.Offset(0, 1).Value, i, 1))
Set gef = Range("C:C").Find(cod)
If gef Is Nothing Then
z.Offset(0, 2).Value = cod
erledigt = True
Exit For
End If
Next i
End If
End If
If erledigt = False Then _
z.Offset(0, 2).Value = "KEIN CODE GEFUNDEN!"
Next z
End Sub

Name steht in der Spalte A, Vorname in B, der Code dann in C.
Gruß
Heinz
Anzeige
VIELEN DANK AN EUCH BEIDE UND KOMPLIMENT!!!
21.09.2005 15:33:40
NIKI
Wahnsinn, perfekt!

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige