WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Excel Zeichenkette trennen in Titel, Vorname und Nachname (http://www.wcm.at/forum/showthread.php?t=49408)

Montafon 12.03.2002 11:54

Excel Zeichenkette trennen in Titel, Vorname und Nachname
 
Hallo
hab da wieder mal ein kleines Problem

sollte eine Funktion haben dir mir aus den Zelleninhalten

zB.
DDr. Max Mustermann
Med. Dr. Franz-Stefan Ates
Erich Vogel

den Nachnamen , den Vornamen und den kompletten Titel herausnimmt und in dementsprechende Zellen einträgt

ich bin schon soweit dass ich den Nachnamen herausbekomme
aber alles ander scheitert kläglich

wer kann mir helfen?

Danke für eure Hilfe

Sonic 12.03.2002 13:57

HI!

Leider hab ich noch nie etwas in Exel usw programmiert.
Aber VBA soll ja VB ser ähnlich sein.
Vielleicht hilft dir mein Code ja weter

Code:

Private Const AlleTitel As String = "DR. DDR. PROF. DOKTOR UNIPROF. MED."

Private Sub Command1_Click()
  Dim fullname As String 'Hier wird der Volle Name zwischengespeichert
  Dim VName As String 'Hier kommt der nachname hin
  Dim NNAme As String 'Hier der Vorname
  Dim Titel As String 'Die gesammelten Titel
  Dim temp As String  'Hält den Temporären Abschnitt
  Dim iPos As Integer 'Um zu entscfheiden ob wir beim vornamen oder beim nachnamen sind
 
  fullname = Trim(Text1.Text) & " " 'Alle führenden und nachkommenden spaces wegschneiden und ein space hinufügen
 
  While Len(fullname) > 0 'Solange wir was zum verarbeiten haben
   
    temp = Left(fullname, InStr(1, fullname, " ") - 1) 'Den nächsten teil des namens (bis zum sapce) rausschneiden
    fullname = Right(fullname, Len(fullname) - InStr(1, fullname, " ")) 'Den anderen teil rausschneiden
    If InStr(1, AlleTitel, UCase(temp)) Then 'Prüfen ob der Teil des namens ein Titel ist dh ob er in unserem AlleTitel String vorkommt
      'Es ist ei nTitel also zu unseren endgültigen Titeln hinzufügen
      Titel = Titel & " " & temp
    Else
      'Es ist kein titel
      If iPos = 0 Then
        'Wen niPos noch 0 ist ist es der vorname
        VName = temp
        iPos = 1
      Else
        'Ansonsten der Nachname
        NNAme = temp
      End If
    End If
  Wend
 
  Titel = LTrim(Titel) 'Das 1. Leerzeichen vom titel wegschneiden
End Sub

Das wichtigste ist das von links nach rechts jeder teil einzeln abgearbeitet wird.
Um zu entscheiden ob es ein Titel ist oder nicht, haben wir einen String in dem Alle titel drinnen stehen, dann prüfen wir ub der abschnit den wir gerade beabeiten in diesem string vorkommt, wenn ja dann wird er zu unserem Titel string hinzugefügt.

Ich hoffe mein Code ist verständlich und hilft dir weiter.
Bei Fragen melde dich einfach wieder. ;)

lg

Montafon 12.03.2002 14:02

danke für deine Hilfe

kann ich leider nicht so machen

da die Daten zu unterschiedlich sind - leider

mein Ansatz ist eher folgendermaßen

zuerst die Zeichenkette umdrehen
dann nach dem ersten Leerzeichen suchen
Zeichenkette von rechts rausschreiben
wieder Leerzeichen suchen
dann Zeichenkette zwischen ersten und 2. Leerzeichen rausschreiben
und dann die zeichen vor dem 2. Leerzeichen rausschreiben

aber die Frage ist wie löse ich das programmiertechnisch in Excel VBA

Sonic 12.03.2002 16:11

Hi!

Ich versteh nicht ganz was der unterschied zwischen deiner und meiner Methode sein soll, außer das du die strings 2x drehst.

nehmen wir "Med. Dr. Franz-Stefan Ates" als Beispiel:

Meine Methode:

1.)
beim 1. leerzeichen schneiden "Med." übrig bleibt "Dr. Franz-Stefan Ates "
wenn "Med." in dem string der titel vorkommt dann für den Titel übernehmen (ansonsten währe es ein vorname)

2.)
beim nächsten leerzeichen schneiden "Dr." übrig bleibt "Franz-Stefan Ates "
kommt wieder in unserer Titelliste vor also zum titel hinzufügen.
Titel sieht wie folgt aus " Med. Dr."

3.)
beim nächsten leerzeichen schneiden "Franz-Stefan" übrig bleibt "Ates "
kommt in unserer titelliste nicht vor also ist es ein vorname

4.) beim nächsten leerzeichen schneiden "Ates" übrig bleibt ""
kommt in der Titelliste nicht vor also ist es der nachname

ENDE

Deine Methode:
1.)
string umdrehen
aus "Med. Dr. Franz-Stefan Ates" wird "setA nafetS-znarF .rD .deM"

2.) bis zum 1. leerzeichen schneiden "setA" "nafetS-znarF .rD .deM"
als Nachname speichern

3.) bis zum 1. leerzeichen schneiden "nafetS-znarF" ".rD .deM"
als Vorname speichern

der rest ist Titel.


Vielleicht steh ich ja auf der Leitung....


lg


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag