Clever-Excel-Forum

Normale Version: Nachname/Vorname in String ermitteln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe folgendes Problem:

In einer Adress-Tabelle mit 2500 Datensätzen muss der Nachname und Vorname aus einer Zelle für eine Anschrift selektiert werden. In dieser Zelle gibt es zusätzlich auch weitere Angaben, wie Berufsbezeichnung oder Geschäft. Insgesamt 7 verschiedene Formate.

1. Nachname(NN) Vorname(VN)
2. VN NN
3. VN NN Firma
4. NN VN Firma
5. Firma VN NN
6. Firma NN VN
7. Firma

Da die Person, die diese Tabelle bearbeiten soll fast keine Erfahrung mit excel hat, sollte die Lösung im handling nicht allzu kompliziert sein. 
Optimal wäre pro Zelle manuell ein Makro aufzurufen, das eine Auswahlliste zur Verfügung stellt, in der man nur die richtige Form anzuklicken braucht und dann automatisch den Vornamen und Nachnamen in die entsprechenden Zellen stellt.
Hallöchen,

gibt es zwischen den einzelnen Positionen irgendwelche Trennzeichen? Ansonsten sehe ich da die Fälle Smile davonschwimmen - oder waren's die Felle Smile

Beispiel:

Nagelstudio Ilse Schön
wäre einfach, erster Text ist die Firma, zweiter der Vorname und dritter der Nachname

Nagelstudie schnelle Feile Chantalle Ilse von Drüben

So, nun gibt es ein paar mehr Worte und bei Chantalle bin ich mir nicht sicher, ob das noch zum Nagelstudio gehört oder zum Vornamen der geadelten Dame - könnte ja ein doppelter sein.
Wenn es denn so einfach wäre, insgesamt sind es wohl 9 verschiedene Formen ohne Trennzeichen. Die Datei hat meine Frau von ihrem Chef und hat 400€ gekostet. Nachbearbeitungszeit 8-10 Stunden, inklusive Sehnenscheidenentzündung und Fehler. Ich hätte für diesen Sch... kein Geld ausgegeben.

Ich bin nun auch nicht der große Ecxel-Experte Huh und werde eine Lösung unter Smartsuite Approach  Idea versuchen. Das wäre dann aber nur eine Hilfskrücke.  :22:
Hallöchen,

das wäre hier mal ein erster Ansatz. Funktioniert auch nur mit dem Eintrag in A2 und zeigt sozusagen ein Muster, wie man den Text trennen kann und was für den Anwender trotzdem noch für eine Arbeit dahinter steckt.
Hallo,

man könnte da einiges rumbasteln, so dass das umsortieren sogar Spaß bereiten könnte.
Ich habe auch mal eine simple Lösung in der Beispielmappe.

In Tabelle1 sind die Daten schon mit Text in Spalten getrennt in Spalten.
Diese werden manuell in tabelle2 ab Zelle A2 eingefügt.
In Tabelle2 sind die Überschriften schon in der Reihenfolge, so wie man sie haben möchte.
Die Überschriften werden beim aktivieren der tabelle2 in die Combobox eingelesen.
Man wählt eine Überschrift aus. Die Spalte wird farbig hervorgehoben.
Das bedeutet alles was man jetzt anklickt wird in diese Spalte in der gleichen Zeile geschrieben. Der vorhandene Inhalt wird nicht gelöscht, sonder ausgetauscht.

Also einfach mal etwas aus der Combobox auswählen und in die Zellen mit Einträgen klicken und beobachten.

Hier die Beispielmappe:

[attachment=11489]


Zum Testen für alle, die keine Dateien mit Makros herunterladen möchten:

Arbeitsblatt mit dem Namen 'Tabelle2'
 ABCDEFGH
1FirmaVornameNachnameStrasseHausnummerPLZOrtBemerkung
2HansMüller12345KielHolzstr15  
312345HamburgMusterstr.100FaXyZSchmitzKlaus
4MerkelGerda80001Münchenvalentinstr32FaStereo
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Folgender Code hinter die Tabelle:

Code:
Private Sub ComboBox1_Change()
Range("A1").CurrentRegion.Interior.ColorIndex = xlNone
If Me.ComboBox1.ListIndex > -1 Then
 With Cells(1, Me.ComboBox1.ListIndex + 1)
   .Resize(.CurrentRegion.Rows.Count, 1).Interior.ColorIndex = 15
 End With
End If
End Sub

Private Sub Worksheet_Activate()
 Me.ComboBox1.List = Application.Transpose(Range("A1").CurrentRegion.Resize(1, Range("A1").CurrentRegion.Columns.Count))
 ComboBox1.ListIndex = -1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strgT As String
If Target.Count = 1 Then
 If Me.ComboBox1.ListIndex > -1 Then
   If Target.Column < 9 And Target.Row > 1 Then
     If Target <> "" Then
       strgT = Cells(Target.Row, Me.ComboBox1.ListIndex + 1)
       Cells(Target.Row, Me.ComboBox1.ListIndex + 1) = Target
       Target = strgT
     End If
   End If
 End If
End If
End Sub

Und es muss in die Tabelle eine Combobox aus den ActiveX Steuerelementen eingefügt werden.
Hallo,

ja, ich habe mir auch mal Gedanken gemacht und anbei eine Beispieldatei.  Die anderen Lösungen hab ich noch nicht angeschaut.

Mein Beispiel wird am Anfang etwas schwierig sein, denn es besteht aus 2 verschiedenen Tabellen mit vielen Button.  Die 1. Tabelle dient zum auflisten der einfaccheren Daten, die man am leichtesten zuordnen kann.  Die Rohdaten müssen in Spalte B kopiert werden.  Mir faellt gerade ein ich habe vergessen den Index in Spalte A automatisch auszufüllen   Bitte von Hand mit "ausfüllen Seriell" erledigen.  

Der oberste Linke Button erstellt zuerst in Spalte N eine Liste aus Einzel Namen, wo man mit "V, N, B, F" mir sagen muss was Vorname, Name, Beruf oder Firma ist.  unnütze Daten können gelöscht werden.  Man kann für Doppel Nachnamen eine Zeile einfügen und danach sortieren.  Doppel Vornamen findet man Programm automatisch. Sie werden Rot markiert.  Nach dem ausfüllen der Spalte M mit dem Button "übernehmen" die Namen in die Spalten N-R übernehmen.

Weiter geht es mit dem Button "Spalte E-H" auflisten.  Hier werden alle Daten soweit bekannt zugeordnet.  Doppel Vornamen erkennt mein Programm automatisch und fügt sie in Spalte O mit ein.  Zur Sicherheit wird die Zelle zum prüfen rot markiert.  Ich werde aber nicht alle daten auf Anhişeb erfassen können.   

Das Programm prüft beim auflisten in Spalte F-I ob die Einzelworte von der Laenge her mit dem Original String übereinstimmen.  Dann wird in der OK Spalte ein Haeckchen gesetzt, sonst erscheint ein Fragezeichen.  Ist das Haeckchen in Rot heisst das,  Der Wert stimmt, aber das Programm ist sich nicht ganz sicher ab alle Wörter korrekt sind?   Beispiel der Name "Schön" und "Schönfeld" könnte Problem geben.  Rote Zeilen immer manuelle prüfen!!

Wurden Namen von Hand korrigiert kann man die Daten mit dem grünen Button als okay erklaeren. Dazu muss der Cursor in der richtigen Ok Zeile stehen!  Ist die Prüfung beendet kann man dişese daten in die éGültige Daten" Tabelle verschieben.  Dannach bleiben die noch unbearbeiteten Daten offen.  Die kann man in Tabelle2 bearbeiten.

Tabelle2 hat ein anderes System.  Zum kopieren dient der Button ganz Rechts "Tabelle" kopieren"  Hier brauche ich in Spalte D den Code "V/N/B/F" ohne Space aber in der richtigen Reihenfolge. Bei Doppel Vornamen 2x "VV", ebenso bei Doppel Nachnamen, wenn kein "-" dazwischen steht.  Bei Bindestrich nur einmal "N" eingeben.  Hier werden alle verbleiben Worte als Firmentext oder Beruf angesehen.  Wieder mit grünem Okay wenn ein Datensatz stimmt.

Weil ich nicht weiss wieveile Exoten es in den Daten gibt kann ich nicth abschaetzen wie gut das Programm ist??
Einfach in der Praxis ausprobieren.  Dürfte schneller gehen als von Hand auswerten.

mfg  gast 123
Hallo Atilla,

ja, ein Anfang ist gemacht Smile Mein Ansatz ist da deutlich komplizierter zu programmieren.

Interessant wird es bei Deinem Ansatz mit
mehrteilige Vornamen,
mehrteilige Nachnamen
mehrteilige Firmannamen
mehrteilige Ortsnamen
mehrteilige Straßennamen

Da passt ja das Austauschen nicht mehr. Eventuell könnte man da Quelle und Ziel trennen. Man wählt "Firma" in der Combo, und alles was man dann anklickt kommt in der Reihenfolge ins Ziel, wie es in der Quelle steht. Man könnte also beim Klicken der Straße erst die Hausnummer anklicken und dann den Straßennamen. Wäre aus meiner Sicht wichtig, falls man mal was vergisst. Hat man was zuviel, klickt man in der Quelle nochmal drauf und es wird aus dem Ziel entfernt.

Bei meinem Ansatz wird die Umsetzung einer Änderung z.B. komplizierter, wenn schon Daten im Folgefeld gewählt sind. Ich müsste z.B. bei "Kürzung" des Vornamens Daten aus dem Nachnamensfeld in des Vornamensfeld verschieben usw. Dazu (und auch aus anderen Gründen) würde ich den Code aus den Ereignisprozeduren auslagern und ...


Hier nochmal der String aus meinem Beispiel, noch um den mehrteiligen Vorname und Straßennamen erweitert

William Christ Birne vom Baume Baumschule Lutherstad Wittenberge GmbH & Co KG 06888 Lutherstadt Wittenberge Straße Am Bahnhof 1

müsste getrennt werden in

William Christ
Birne vom Baume
Baumschule Lutherstadt Wittenberge GmbH & Co KG
06888 Lutherstadt Wittenberge
Straße Am Bahnhof 1