Guten Tag!
Folgendes Problem: Ich habe zwei Tabellen mit Namen.
In der einen Tabelle steht z.B.
Peter Klausen Bau GmbH
Klaus-Dieter Pelzer-Möring Fensterbau
Jupp Schmitz Fahrradhandel
In der zweiten Tabelle steht
Peter Klausen
Pelzer Fensterbau
Josef Schmitz
Jetzt überlege ich, wie ich die Tabellen abgleichen kann.
Meine erste Idee ist, ich definiere in der zweiten Tabelle ein „Suchspalte“,
die lautet
Klausen
Pelzer
Schmitz
Jetzt suche ich nach einer Funktion, die in der ersten Tabelle hingeht und
Zeile für Zeile untersucht, ob einer der Namen aus der „Suchspalte“ vorkommt.
Wer kann mir hier helfen???
Vielen Dank
Ingo
Formel oder Makro?
wenn Makro, dann schnitz’ ich Dir eins…
dann gib mir aber gleich an…
- wieviele Datensätze Du maximal erwartest
- in welcher Spalte gesucht werden soll
- ob Deine suchbegriffe an einem festen Ort/Zelle (welche?) oder per eingabefeld beim starten des makros gesucht werden soll
- wie die suchergebnisse markiert werden sollen…
Hallo Ingo,
mit einfachen Funktion ist dies wohl nicht lösbar.
Mit folgender benutzerdefinierten Funktion geht
In Tabelle 2 muß du für die Daten (Spalte Namen bis Hilfspalte) den Namen „DatenTabelle2“ vergeben.
Function NameSuchen(Name)
NameSuchen = ""
For I = 1 To Range("DatenTabelle2").Rows.Count
If InStr(1, Name, Range("DatenTabelle2").Cells(I, 5)) \> 0 Then
'Cells(I, 5)): 5 ist die Nummer der Hilfsspalte innerhalb von "Datentabelle2"
' ggf. 5 ändern
NameSuchen = NameSuchen & Range("DatenTabelle2").Cells(I, 1)
End If
Next
End Function
Zur Verdeutlichung hier die von mir verwendeten Beispieltabellen
Tabellenblattname: Tabelle1
A B C D E
1 Name Straße PLZ Ort Name in Tabelle2
2 Peter Klausen Bau GmbH Peter Klausen
3 Klaus-Dieter Pelzer-Möring Fensterbau Pelzer Fensterbau
4 Jupp Schmitz Fahrradhandel Josef SchmitzHubert Schmitz
Benutzte Formeln:
E2: =NameSuchen(A2)
E3: =NameSuchen(A3)
E4: =NameSuchen(A4)
Tabellenblattname: Tabelle2
A B C D E
1 Namen Strasse PLZ Ort Hilfsspalte
2 Peter Klausen Klausen
3 Pelzer Fensterbau Pelzer
4 Josef Schmitz Schmitz
5 Fritz Maier Maier
6 Hubert Schmitz Schmitz
Die Funktion trägt in Tabelle 1 die Namen aus Tabelle 2 ein.
Gruß
Franz
das liest sich interessant
kannst Du mir evtl noch kurz erklären, wie ich die Rückgabe aus so einer Funktion steuere also, dass ein Zellinhalt
=Testfunktion(„Hugo“)
dann zum Beispiel „Hugo ist verrückt“ in die Zelle schreibt?
Deine Funktion ist mir so irgendwie zu komplex ums zu kapieren *g*
Hallo Munich,
Function Testfunktion(Name)
Testfunktion = ""
For I = 1 To Range("DatenTabelle2").Rows.Count
If InStr(1, Name, Range("DatenTabelle2").Cells(I, 1)) \> 0 Then
Testfunktion = Name & " ist verrückt"
End If
Next
End Function
In diesem Fall entspricht „DatenTabelle2“ dem Bereich in der Spalte „Hilfsdaten“, der die zu suchenden Namen in der Tabelle 2 enthält.
Diese Vereinfachung finde ich für die gewünschte Anwendung allerdings nicht sinnvoll. Meine Variante erlaubt relativ einfach den Rückgabewert der Funktion anzupassen und weitere Daten aus Tabelle2 nach Tabelle1 zu übernehmen, z.B. auch die Address-Information. Dann kann man anschließend einfach manuell, die Einträge in Tabelle1 vergleichen. Durch Anpassungen der Funktion wäre sogar ein automatischer Vergleich der Werte möglich.
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
1 „Gefällt mir“