3.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo lieber Community,

ich habe ein Problem. Ich bin gerade ein bisschen in Excel am Rätseln. Es geht hierbei um eine Mitgliederliste

Also ich habe 2 Tabellenblätter in dem ersten Tabellenblatt sind Spalten mit den Bezeichnungen:
Name, Vorname, Geb.-Datum,....

in dem zweiten Tabellenblatt sind die Spalten mit den Bezeichnungen:
Name, Vorname, Zusatz, Adresse, Plz, Ort

Nun zu meinem Probleme

Ich habe im Tabellenblatt eins ja die ganzen Daten des Mitgliedes nun ist es ja doof wenn ich von dem Mitglied XY das Geburtsdatum wissen will und dann die Adresse d.H. ich möchte die Adresse, Plz, Ort etc in einem Tabellenblatt haben.

Ist es in Excel möglich, dass er anhand des Namen und des Vornamens aus dem Tabellenblatt 1 die Straße aus dem Tabellenblatt 2 sucht und dann in Spalte XY einfügt?

Danke schon einmal im Vorraus

11 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

das Problem ist vielleicht mit dem Sverweis() zu lösen. Beim Sverweis ist jedoch das Problem, dass bei mehrmals gleichen Namen immer der erste Name genutzt wird und das könnte nicht in deinem Sinne sein.

Ich vermute mal, das mehrere Namen mit unterschiedlichen Vornamen und vielleicht auch gleiche Namen und Vornamen mit unterschiedlichen Adressen vorkommen, da wäre eine Makrolösung erforderlich

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo Helmut,

ganz richtig ich habe mehrere Nachnamen identisch. Der SVerweis klappt leider nicht. Hatte ich schon ausgetestet.

Woher bekomme ich so eine Markrolösung?

Danke

Czerno
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

das Makro müsste man bauen, da gibt es wahrscheinlich keine fertige Lösung.

www.file-upload.net/

hier könntest du deine Beispieldatei zur Verfügung stellen und den Link dann hier hinterlegen

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo czerno,

wenn Du wirklich mehrere Paare von (Name; Vorname) hast, dann hast Du nicht nur ein ernsthaftes, sondern ein unlösbares Problem. Da ist es dann auch keine Frage, ob man das besser mit dem SVERWEIS, einer anderen Formel oder mit VBA anpackt, es geht einfach nicht, jedenfalls nicht ohne eine weitere Information, die die bis dahin gleichen Schlüsselinformationen unterscheidbar (eindeutig) macht.

Wenn Du also z. B. zwei Helmut Schmidts mit zwei verschiedenen Geburtstagen hast, einen aus Hamburg und einen aus Bremen, kann auch ein noch so intelligentes Programm nicht feststellen, ob nun der Hamburger der ältere ist oder der Bremer.

Wenn man sich auf der Suche nach einer weiteren Information aber vielleicht darauf besinnt, dass die beiden Listen/Tabellen irgendwann einmal chronologisch erstellt (und seitdem niemals umsortiert) wurden, dann könnte man dies als zusätzliche Information verwenden. Wer also in der Adressliste vor dem anderen steht, steht auch in der Geburtstagsliste vor dem anderen. Dieser Gedanke (und alle ähnlichen) funktioniert natürlich nur, wenn die Daten vollständig sind, denn hätte der eine H. Schmidt kein Geburtsdatum (in der Liste), dann wüsste man ohne weitere Untersuchungen der Listen schon nicht mehr genau, welchem von beiden der vorhandene Geburtstag zuzuordnen ist.

Als menschlicher Sachbearbeiter mag man sich da je nach Situation irgendwie eine Eselsbrücke bauen, damit Formeln und Programme einwandfrei arbeiten, brauchen sie eindeutige Daten! Denke deshalb zuerst darüber nach und danach über den besten Lösungsweg. Mit einem zusammengesetzten eindeutigen Key-Feld könnte man den SVERWEIS benutzen.

MfG Charlotte
0 Punkte
Beantwortet von
Korrektur:

... wenn Du wirklich mehrere gleiche Paare von (Name; Vorname) hast ...

MfG Charlotte
0 Punkte
Beantwortet von
Danke für die Antworten.

Mir ist eingefallen dass man theoretisch ja einen SVerweis nehmen kann nur er muss eben nach 2 Suchobjekten suchen.

Sprich
Tabellenblatt 1
Zeile A Name
Zeile B Vorname

Tabellenblatt 2
Zeile A Name
Zeile B Vorname
Zeile C Zusatz
Zeile D Straße
Zeile E PLZ
Zeile F Ort

Ich habe auch schon mal gegoogelt nur irgentwie raffe ich das nicht
Kann mir das einer für Doofe erklären?

Danke

Czerno

Ach ich meine Spalten sry
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

eine variante

tb1=daten
tb2=A2 oder A2+B2 als eingabefelder

fuer einen automatismus wuerde sich das SelectionChange Ereignis anbieten

gruss nighty

Option Explicit
Sub ArraySucheKopie()
Dim Spalte As Long
Dim Index As Long
Dim Tb1Zeilen As Long
Dim Tb1Spalte As Long
Dim Zelle As Long
Dim Eingabe1 As String
Dim Eingabe2 As String
Eingabe1 = Worksheets(2).Range("A2")
Eingabe2 = Worksheets(2).Range("B2")
Worksheets(1).Activate
Tb1Zeilen = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Tb1Spalte = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
ReDim ArrayA(1 To Tb1Zeilen, 1 To Tb1Spalte) As Variant
ReDim ArrayNeu(1 To Tb1Zeilen, 1 To Tb1Spalte) As Variant
ArrayA = Range(Cells(1, 1), Cells(Tb1Zeilen, Tb1Spalte))
For Zelle = 1 To Tb1Zeilen
If ArrayA(Zelle, 1) = Eingabe1 And Eingabe2 = "" Or ArrayA(Zelle, 1) = Eingabe1 And ArrayA(Zelle, 2) = Eingabe2 Then
Index = Index + 1
For Spalte = 1 To Tb1Spalte
ArrayNeu(Index, Spalte) = ArrayA(Zelle, Spalte)
Next Spalte
End If
Next Zelle
If Index = 0 Then
Worksheets(2).Activate
MsgBox ("Keine Daten vorhanden !")
Else
Worksheets(2).Activate
Range(Cells(3, 1), Cells(Tb1Zeilen + 1, Tb1Spalte)).Resize(UBound(ArrayNeu())) = ArrayNeu
End If
End Sub



weitere varianten waeren der autofilter wie die findfunctiom
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

hier noch ein jeweiliger ansatz fuer die findfunction wie dem autofilter

automatismus wie oben beschrieben ist möglich

gruss nighty

Option Explicit
Sub SuchenKopieren()
Dim Suche As Range
Dim Zhler As Long
Dim Eingabe As String
Dim Schalter As Boolean
Zhler = 1
Eingabe = Application.InputBox("Eingabe des Monats")
Do
Set Suche = Workbooks(1).Worksheets(1).Range("A" & Zhler & ":A" & Workbooks(1).Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Eingabe)
If Not Suche Is Nothing Then
Worksheets(1).Rows(Suche.Row & ":" & Suche.Row).Copy Worksheets(2).Cells(Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1, 1)
Zhler = Suche.Row + 1
Schalter = True
Else
If Schalter = False Then
MsgBox ("Keine Daten vorhanden !")
Else
MsgBox ("Daten wurden Kopiert !")
End If
Exit Do
End If
Loop
End Sub


Sub FilterKopieren()
Worksheets("Tabelle1").Range("A1").AutoFilter Field:=1, Criteria1:=InputBox("Eingabe")
Worksheets("Tabelle1").Rows("2:" & Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy Worksheets("Tabelle2").Range("A" & Worksheets("Tabelle2").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
Worksheets("Tabelle1").Range("A1").AutoFilter
End Sub
0 Punkte
Beantwortet von
Hallo czerno,

1. warum schreibst Du in AW6 eigentlich nicht dazu, dass in Tabellenblatt 1 in Zeile C (oder woanders?) das Geburtsdatum steht? Man ahnt es, nach gründlichem Lesen der gesamten Vorgeschichte, aber man wüsste es gern sicher.

2. Alle diese Zeilen (Zeile A, Zeile B, Zeile C, Zeile D, ...) sind in Wirklichkeit entweder Spalten oder heißen Zeile 1, Zeile 2, Zeile 3, Zeile 4, ...

3. Ich gehe davon aus, dass Du das Geburtsdatum aus Tabellenblatt 1 Spalte C nach Tabellenblatt 2 Spalte G übertragen willst (und nicht umgekehrt die Adress- und anderen Daten aus Tabellenblatt 2 nach Tabellenblatt 1). Das geht - die Eindeutigkeit der Daten vorausgesetzt (siehe AW4, 5) - grundsätzlich mit dem SVERWEIS (bzw. WVERWEIS, wenn die Daten in Zeilen angeordnet sind).

4. Es gibt eine eher schlichtere Variante, bei man in Tabellenblatt 1 eine Hilfsspalte zwischen den Spalten B und C einfügt, wodurch diese Hilfsspalte zur Spalte C wird und die ursprüngliche Spalte C mit dem Geburtsdatum zur Spalte D. Die Hilfsspalte C kann jederzeit ausgeblendet werden, so dass das Aussehen des Tabellenblattes gewahrt bleibt. In die Hilfsspalte mit der Formel

=A2 & "#" & B2 .

ab C2 sucht der SVERWEIS nach dem zusammengesetzten Suchbegriff "Name#Vormane" (also konkret z. B. nach "Schmidt#Helmut"), liefert dessen Geburtsdatum aus Spalte D und trägt es in Tabellenblatt 2 Spalte G ein, wo die SVERWEIS-Formel

=WENN(A2 & B2 = ""; ""; WENN(ISTNV(SVERWEIS(A2 & "#" & B2; Tabellenblatt1!C2:D19; 2; 0)); "unbekannt"; SVERWEIS(A2 & "#" & B2; Tabellenblatt1!C2:D19; 2; 0)))

in G2 steht. Eine entsprechende Hilfsspalte im Tabellenblatt 2 ist nicht nötig, da der Suchbegriff direkt in der Formel zusammengesetzt werden kann.

5. Es geht auch ohne Hilfsspalte mit einer Formel für "Fortgeschrittene", die man auf www.excelformeln.de/formeln.html?welcher=30 nachlesen kann. Lässt man erstmal zwecks Gegenüberstellung das Tabellenblatt 1 wie in 3. beschrieben, dann lautet die Formel (in H2):

=WENN(A2 & B2 = ""; ""; WENN(ISTNV(VERWEIS(2; 1 / (Tabellenblatt1!A2:A9 & "#" & Tabellenblatt1!B2:B9 = A2 & "#" & B2); Tabellenblatt1!D:D)); "unbekannt"; VERWEIS(2; 1 / (Tabellenblatt1!A2:A9 & "#" & Tabellenblatt1!B2:B9 = A2 & "#" & B2); Tabellenblatt1!D:D)))

Ohne die Hilfsspalte und mit dem Geburtsdatum in Spalte C müsste Tabellenblatt1!D:D ersetzt werden durch Tabellenblatt1!C:C. Außerdem müssen natürlich Tabellenblatt1!A2:A9 und Tabellenblatt1!B2:B9 an die entsprechende Größe angepasst werden. Wichtig: gleiche Größe!

MfG Charlotte
0 Punkte
Beantwortet von
Hallo,

in der letzten Formel ist dann beim Anpassen und Kopieren doch ein kleiner Fehler passiert, es muss (in H2):

=WENN(A2 & B2 = ""; ""; WENN(ISTNV(VERWEIS(2; 1 / (Tabellenblatt1!A1:A9 & "#" & Tabellenblatt1!B1:B9 = A2 & "#" & B2); Tabellenblatt1!D:D)); "unbekannt"; VERWEIS(2; 1 / (Tabellenblatt1!A1:A9 & "#" & Tabellenblatt1!B1:B9 = A2 & "#" & B2); Tabellenblatt1!D:D)))

heißen und

... müssen natürlich Tabellenblatt1!A1:A9 und Tabellenblatt1!B1:B9 an die entsprechende Größe angepasst werden. Wichtig: gleiche Größe!

MfG Charlotte
...