Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Emailadressen Namen zuordnen

Emailadressen Namen zuordnen
Thomas
Hallo!
Gibt es die Möglichkeit folgendes per VBA zu lösen?
Ich habe in Spalte A den Vorname, in Spalte B den Nachnamen und in Spalte C Emailadressen - soweit so gut, ALLERDINGS ist die Spalte C nicht den Spalten A/B zugeordnet
wie muss der Code aussehen der überprüft ob
ENTWEDER Vor- UND Nachname in der Emailadresse vorkommt - nicht zwangsläufig in der gleichen Reihenfolge! und die emailadresse aus Spalte C dann in der passenden (zu den Spalten A+B) Zeile der Spalte D ausgibt
ODER Vorname - dann in Spalte E
oder Nachname dann in Spalte F
quasi - ein Zusammenfügen/Zusammensortieren der Namen zu den Emailadressen?
Anzeige
AW: Emailadressen Namen zuordnen
26.01.2012 16:35:09
Dirk
Hallo Thomas,
bei deiner Aufgabenstellung gibt es x Fehlermöglichkeiten.
Hier mal ein paar Beispiele
Häufig verwendete Nachnamen (im schlimmsten Fall auch noch Vorname)
Umlaute (meines wissens nach sind mitlerweile umlaute in Emailadd erlaubt)
um das Ganze mal Bildlicher zu machen
Häufige e-Mail syntax für z.b. Peter Müller
Peter.Müller@ , Peter.Mueller@ *1
P.Müller@, P.Mueller@ *2
Müller@, Mueller@ *3
*1 sowie Peter als auch Müller sind häufig verwendete Namen (meherer Treffermöglichkeiten)
*2 Müller gibt es viele und Vornamen mit P ebenfalls
*3 schlimmstfall
Gibt es jeden Nachnamen bei dir nur ein mal kein Problem
Ansonsten wirds schon kritisch
Gruß
Dirk
Anzeige
AW: Emailadressen Namen zuordnen
26.01.2012 17:03:00
Thomas
Hallo Dirk!
Du hast die Problematik gut zusammengefasst, ich hätts nicht treffender machen können, also ja ist mir genau das bewusst, aber deswegen ja auch die VBA-Lösungssuche da es manuell natürlich auch geht (ca. 500 Emailadressen) aber eben sehr lange dauert?
Die idee war, dass alle "möglichen" gefunden emailadressen in den Spalten nach Rechts aufgelistet werden, um bei Deinem Beispiel zu bleiben
in D3 den Treffer zu Peter Müller der heisst Peter.Meier@beispiel.de
in E3 den Treffer zu Peter Müller der heisst Hans.Müller@aon.de
in F3 den Treffer zu Peter Müller der heisst Max.mueller@beispiel2.de
in G3 den Treffer zu Peter Müller der heisst peterm@beispiel3.de
usw. - und ja ich weiss die Möglichkeiten sind SEHR vielfältig...
Ich möchte in dem Fall die Liste der automatisch in outlook gespeicherten Emailadressen (jedesmal wenn Du an jemand schreibst...) meinem synchronisierten Handy-Kontakten im Outlook zuordnen, und ich dachte die Frage hat sicherlich schon jemand gehabt... scheint nicht so zu sein, oder?
vielleicht findet sich noch jemand der ein Makro ein paar Schleifen laufen lässt....
danke jedenfalls fürs mitdenken!
lg Thomas
Anzeige
AW: Emailadressen Namen zuordnen
26.01.2012 22:10:20
Dirk
Hallo Thomas,
hier probier den mal
der Sucht aber nur nachnamen

Sub t1()
Dim v, n, fz, su As Variant
Dim l, i, dg As Integer
Dim en As Boolean
en = True
With ActiveSheet.Range("a2:AB2000")
Set az = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
l = az.Row
Set n = ActiveSheet.Range("b2", Range("b2").End(xlDown))
For dg = 1 To l - 1
For i = 1 To 2
If i = 1 Then
su = "*" & n(dg) & "*"
ElseIf i = 2 Then
On Error Resume Next
su = n(dg)
su = Replace(su, "ü", "ue")
su = Replace(su, "ö", "oe")
su = Replace(su, "ä", "ae")
su = "*" & su & "*"
End If
With ActiveSheet.Range("c2:c" & l)
Set fz = .Find(what:=su, after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlNext)
If fz Is Nothing Then
GoTo ni
End If
erstadd = fz.Address
Do
Range("d" & dg + 1).Select
efc
ActiveCell = fz
Set fz = .FindNext(fz)
Loop While Not fz Is Nothing And fz.Address  erstadd
End With
ni:
Next i
Next dg
End Sub
Private Sub efc()
Do While ActiveCell  ""
ActiveCell.Offset(0, 1).Range("A1").Select
Loop
End Sub

Anzeige
Tabellenblätter erstellen mit Makro danach einlese
27.01.2012 10:39:55
Thomas
Hallo Dirk!
Ich bin begeistert! Vielleicht ist es sogar besser "nur" nach dem Nachnamen zu suchen? Jedenfalls ist das Ergebnis sensationell - unter Berücksichtigung der Schwierigkeiten dahinter.
Die "falsch" zugeordneten Emailadresse zuzuordnen ist jetzt viel viel weniger Arbeit als alle mühsam herauszusuchen.
Also vielen vielen Dank! - und ich kann das Makro immer wieder laufen lassen sobald sich die Liste wieder füllt....
Eine Funktion wäre noch super - am Ende des Makros, kann man dann alle "bereits" zugeordenten - wenn auch falsch zugeordneten - emailadressen mit einer Hintergrundfarbe (z.B. Orange) markieren, dann kann ich danach noch Manuell nach Farben filtern und habe alle die das Makro nicht zuordnen konnte in einer Liste?
also prüfen ob die Emailadresse in C? irgendwo in den Spalten D bis ? vorkommt und falls ja diese dann mit der Farbe markieren
aber schon jetzt - SENSATIONELL!!!!
lg Thomas
Anzeige
AW: Tabellenblätter erstellen mit Makro danach einlese
27.01.2012 15:55:32
Dirk
Hallo Thomas
Hier der Code mit Färbung der bereits verteilten emailadd
hab auch noch einen Fehler behoben (add ohne umlaute hat er doppelt koppiert)
Einfach den kompletten code austauschen.
solle dir eine andere Farbe leiber sein kannst du einfach kurz ein Makro aufzeichnen und eine Zelle Färben.
aus diesem Code nimmst du dann die zeile .ThemeColor ="Feldfarbe als code " und tauschst diese in den Code hier aus
Viel Spaß damit
Dirk

Sub t1()
Dim v, n, fz, su As Variant
Dim l, i, dg, u1, u2, u3 As Integer
Dim en As Boolean
With ActiveSheet.Range("a2:AB2000")
Set az = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
l = az.Row
Set n = ActiveSheet.Range("b2", Range("b2").End(xlDown))
For dg = 1 To l - 1
u1 = 0
u2 = 0
u3 = 0
For i = 1 To 2
If i = 1 Then
su = "*" & n(dg) & "*"
ElseIf i = 2 Then
On Error Resume Next
su = n(dg)
u1 = InStrRev(su, "ü")
u2 = InStrRev(su, "ö")
u3 = InStrRev(su, "ä")
If u1 = 0 And u2 = 0 And u3 = 0 Then
MsgBox (su)
GoTo dgweiter
Else
su = Replace(su, "ü", "ue")
su = Replace(su, "ö", "oe")
su = Replace(su, "ä", "ae")
su = "*" & su & "*"
End If
End If
With ActiveSheet.Range("c2:c" & l)
Set fz = .Find(what:=su, after:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlNext)
If fz Is Nothing Then
GoTo ni
End If
erstadd = fz.Address
Do
With Range("c" & fz.Row).Interior
.ThemeColor = xlThemeColorAccent6
End With
Range("d" & dg + 1).Select
efc
ActiveCell = fz
Set fz = .FindNext(fz)
Loop While Not fz Is Nothing And fz.Address  erstadd
End With
ni:
Next i
dgweiter:
Next dg
End Sub
Private Sub efc()
Do While ActiveCell  ""
ActiveCell.Offset(0, 1).Range("A1").Select
Loop
End Sub

Anzeige
Tabellenblätter erstellen mit Makro danach einlese
27.01.2012 22:57:46
Thomas
Hallo Dirk!
Sensationell, vielen vielen Dank nochmals!
lg Thomas

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Emailadressen den Namen zuordnen in Excel


Schritt-für-Schritt-Anleitung

Um Emailadressen den Vornamen und Nachnamen in Excel zuzuordnen, kannst Du folgendes VBA-Makro verwenden. Die Daten sollten in Spalte A (Vorname), Spalte B (Nachname) und Spalte C (Emailadressen) angeordnet sein. Das Makro wird die entsprechenden Emailadressen in den Spalten D, E oder F ausgeben, je nachdem, ob Vorname oder Nachname in der Emailadresse vorkommt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem Du im Menü auf Einfügen > Modul klickst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub EmailZuordnen()
    Dim v, n, fz, su As Variant
    Dim l, i, dg As Integer
    Dim en As Boolean
    en = True
    With ActiveSheet.Range("A2:AB2000")
        Set az = .Find(what:="*", after:=.Range("A1"), LookIn:=xlValues, _
        lookat:=xlWhole, searchdirection:=xlPrevious)
    End With
    l = az.Row
    Set n = ActiveSheet.Range("B2", Range("B2").End(xlDown))
    For dg = 1 To l - 1
        For i = 1 To 2
            If i = 1 Then
                su = "*" & n(dg) & "*"
            ElseIf i = 2 Then
                On Error Resume Next
                su = n(dg)
                su = Replace(su, "ü", "ue")
                su = Replace(su, "ö", "oe")
                su = Replace(su, "ä", "ae")
                su = "*" & su & "*"
            End If
            With ActiveSheet.Range("C2:C" & l)
                Set fz = .Find(what:=su, after:=.Range("A1"), LookIn:=xlValues, _
                lookat:=xlWhole, searchdirection:=xlNext)
                If fz Is Nothing Then
                    GoTo ni
                End If
                erstadd = fz.Address
                Do
                    Range("D" & dg + 1).Select
                    efc
                    ActiveCell = fz
                    Set fz = .FindNext(fz)
                Loop While Not fz Is Nothing And fz.Address <> erstadd
            End With
ni:
        Next i
    Next dg
End Sub

Private Sub efc()
    Do While ActiveCell <> ""
        ActiveCell.Offset(0, 1).Range("A1").Select
    Loop
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, um die Emailadressen den Namen zuzuordnen.

Häufige Fehler und Lösungen

  • Fehler: Emailadresse wird nicht gefunden
    Überprüfe, ob die Emailadresse korrekt in Spalte C eingegeben ist. Achte auf Umlaute und unterschiedliche Schreibweisen.

  • Fehler: Die Zuordnung erfolgt nicht korrekt
    Wenn Emails mehreren Namen zugeordnet werden, kann es zu Verwirrungen kommen. Überlege, ob Du nur nach Nachnamen suchen möchtest, um die Trefferquote zu erhöhen.

  • Problem: Umlaute in Emailadressen
    Stelle sicher, dass der VBA-Code die Umlaute korrekt ersetzt. Der bereitgestellte Code enthält bereits Ersetzungen für "ü", "ö" und "ä".


Alternative Methoden

Wenn Du keine VBA-Lösung verwenden möchtest, kannst Du auch Formeln nutzen, um Emailadressen zu generieren. Eine einfache Formel könnte so aussehen:

=IF(ISNUMBER(SEARCH(A2, C2)), C2, "")

Diese Formel überprüft, ob der Vorname in der Emailadresse vorkommt. Bei Bedarf kannst Du ähnliche Formeln für Nachnamen erstellen.


Praktische Beispiele

Angenommen, Du hast folgende Daten:

Vorname Nachname Emailadresse
Peter Müller Peter.Mueller@domain.com
Anna Schmidt Anna.Schmidt@domain.de
Max Mustermann Max.Mustermann@domain.org

Nach Ausführung des Makros könnte das Ergebnis so aussehen:

Vorname Nachname Emailadresse Treffer 1 Treffer 2 Treffer 3
Peter Müller Peter.Mueller@domain.com Peter.Mueller@... Peter.Mueller@... ...
Anna Schmidt Anna.Schmidt@domain.de Anna.Schmidt@... ... ...

Tipps für Profis

  • Optimierung des Codes: Du kannst den VBA-Code anpassen, um weitere Bedingungen zu prüfen oder um mehr Spalten für zusätzliche Treffer zu nutzen.
  • Verwendung von Datenvalidierung: Füge Datenvalidierung in Excel hinzu, um sicherzustellen, dass die Eingaben korrekt sind und die Emailadressen den gängigen Standards entsprechen.
  • Automatisierung: Überlege, das Makro so einzustellen, dass es automatisch ausgeführt wird, wenn neue Daten hinzugefügt werden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Treffer zu speichern?
Du kannst die Schleife im VBA-Code erweitern, um mehrere Treffer in den Spalten D, E, F usw. zu speichern.

2. Was ist, wenn ich keine VBA-Programmierkenntnisse habe?
Du kannst Formeln verwenden, um die Emailadresse zu generieren, oder nach Online-Tools suchen, die ähnliche Funktionalitäten bieten.

3. Kann ich die Emailadressen auch in anderen Formaten speichern?
Ja, Du kannst die Emailadressen auch in eine neue Datei exportieren oder in ein anderes Format konvertieren, je nach Bedarf.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige