[Excel] Vergleich 2er Spalten in 2 verschiedenen Tabellen mit Ausgabe in 3. Tabelle

Stef_an

Mitglied
Hallo,

ich bin relativ unerfahren in Excel was Funktionen betrifft und habe jetzt schon mehrere Tage rumgedoktort, aber ich komme leider nicht zu einem vernünftigen Ergebnis

ich hoffe einer von Euch Experten erbarmt sich meiner und hilft mir.

Ist Zustand:
1 Excel Datei mit 3 Tabellen (sheets)
in der ersten Tabelle (5000 Zeilen) steht in Spalte A vor jeder Zeile eine eindeutige einmalige Nummer
in der zweiten Tabelle (45000 Zeilen) steht in Spalte A auch eine solche Nummer allerdings kann diese mehreren Zeilen in Tabelle 2 vorangestellt sein (Datensätze dahinter unterscheiden sich halt, daher mehrfach Nennung)

Ich möchte nun das jede einzelne Nummer der Spalte A in Tabelle 1 mit den Nummern der kompletten Spalte A in Tabelle 2 abgeglichen wird und wenn identisch soll die komplette Zeile aus Tabelle 2 (also kompletter Datensatz) in Tabelle 3 kopiert werden.

Schonmal vielen Dank für Eure Hilfe.
 
Sorry, aber ich verstehe nicht so ganz was du meinst. Kannst du mal ein paar Daten zeigen oder ein Beispiel wie es jetzt ist.
 
Danke schonmal für die schnelle Antwort.

Ich habe eine Testdatei erstellt, da ich die richtigen Daten nicht öffentlich machen kann.

Wie man in der angehängten Datei sieht sind 4 Werte der Spalte A in Tabelle1 identisch mit Werten der Spalte A in Tabelle 2,
ich möchte nun das die kompletten Zeilen aus Tabelle2 bei denen die Werte identisch sind in Tabelle3 kopiert werden.

Also jeder Wert der Spalte A in Tabelle1 muss mit jedem Wert der Spalte A in Tabelle2 verglichen werden und bei übereinstimmung soll die komplette Zeile (kompletter Datensatz) aus Tabelle2 in Tabelle 3 kopiert werden.
 

Anhänge

So auf die Schnelle fällt mir nur eine Makro Lösung ein:

Visual Basic:
Private Sub Worksheet_Activate()
Dim zeile1, zeile2, zeile3

zeile1 = 1
zeile2 = 1
zeile3 = 1

'komplette Tabelle3 löschen
Tabelle3.Range("A1:B65536").Clear

'Tabelle1 durchlaufen und mit Tabelle2 vergleichen
Do While Tabelle1.Cells(zeile1, 1) <> ""
    Do While Tabelle2.Cells(zeile2, 1) <> ""
        If Tabelle1.Cells(zeile1, 1) = Tabelle2.Cells(zeile2, 1) Then
            Tabelle3.Cells(zeile3, 1) = Tabelle2.Cells(zeile2, 1)
            Tabelle3.Cells(zeile3, 2) = Tabelle2.Cells(zeile2, 3)
            zeile3 = zeile3 + 1
        End If
        zeile2 = zeile2 + 1
    Loop
    zeile1 = zeile1 + 1
    zeile2 = 1
Loop
End Sub

Funktionieren tut es, aber es gibt bestimmt noch eine schönere Lösung !?
 
Vielen Dank für die VBA Lösung, ich werde damit jetzt erstmal weiter experimentieren. Schön das man hier so schnell geholfen wird!

Wenn jemand noch eine Lösung mittels Funktion kennt, möge er bitte weiter in diesem Thread antworten!

Danke!
 
Grüezi Stef an

Du kannst das auch sehr einfach mit dem Spezialfilter angehen.

Starte auf dem 3. Tabellenblatt mit dem Spezialfilter und gib den Listenbereich aus Tabelle2 an, den Kriterienbereich die Werte aus Tabelle1 und als Zielbereich die Zelle A1 in Tabelle 3.

Als VBA-Code sieht das dann z.B. wie folgt aus (das kannst Du ebenfalls über das Activate-Ereignis laufen lassen):

Code:
    Sheets("Tabelle2").Range("A:B").AdvancedFilter _
            Action:=xlFilterCopy, _
            CriteriaRange:=Sheets("Tabelle1").Range("A1").CurrentRegion, _
            CopyToRange:=Range("A1"), _
            Unique:=False


Voraussetzung dafür ist, dass deine Daten jeweils eine Spaltenüberschrift erhalten.
 
Zuletzt bearbeitet:
Danke für den Tip!

Allerdings haben sich gestern noch die Gegebenheiten verändert, es wird jetzt gewünscht das eine Einzelne Tabelle erstellt wird die sich Daten aus anderen Tabellen (die teilweise auf anderen Servern liegen) zieht und Daten vergleicht.

Hier habe ich schon erste Erfolge mit dem SVERWEIS erzielt.
Allerdings bin ich noch ein paar Tage arbeit von der Fertigstellung entfernt.
 
Hallo,

ich bin der Lösung einen Schritt näher gekommen, ich habe mit sverweis alles so hingekriegt wie ich wollte, allerdings mit dem manko das sverweis nur den ersten gefundenen treffer ausgibt.

die lösung habe ich im netz gefunden, da hat jmd. eine funktion online gestellt die wie geschaffen für mich scheint. hier werden alle treffer ausgegeben, allerdings wird das Suchkriterium dann mehrfach in einer zelle ausgegeben und ich müsste es untereinander in einzelnen zellen haben.

Ich bin anscheinend nicht fit genug in vba um die funktion umzuschreiben, daher frage ich hier noch mal ob mir jmd. helfen kann.
hier die funktion

Public Function SVERWEIS2(Kriterium As String, _
Bereich As Range, _
SuchSpalte As Integer, _
ErgebnisSpalte As Integer, _
Optional Unikate As Boolean = True, _
Optional Trenner As String = ", ") As String
'***********************************************
'Autor: Ransi
'***********************************************
Dim arrTmp
Dim L As Long
Dim Mydic As Object
arrTmp = Bereich
Set Mydic = CreateObject("Scripting.Dictionary")
If Unikate = True Then
For L = 1 To UBound(arrTmp)
If arrTmp(L, SuchSpalte) = Kriterium Then Mydic(arrTmp(L, ErgebnisSpalte)) = 0
Next
SVERWEIS2 = Join(Mydic.keys, Trenner)
Else:
For L = 1 To UBound(arrTmp)
If arrTmp(L, SuchSpalte) = Kriterium Then Mydic(L) = arrTmp(L, ErgebnisSpalte)
Next
SVERWEIS2 = Join(Mydic.items, Trenner)
End If
End Function


Danke
 
Hallo,

habe deine PN erst jetzt gelesen da ich am Wochenende unterwegs war.
Leider komme ich mit dem Code den du oben reinkopiert hast nicht wirklich klar. Kannst du mal die Quelle nennen wo er herkommt.
Vielleicht steht da beschrieben was da genau gemacht wird.

Gruß Thomas
 
Hallo,

hier die Quelle: http://www.j-hennekes.de/1729416.htm

Allerdings hat sich wieder mal was geändert.
Ich möchte nun das wenn das Makro Sverweis2 eine Übereinstimmung in der Such Matrix findet
das die komplette Zeile aus der Matrix (wo die Übereinstimmung gefunden worden ist) in eine andere Tabelle kopiert wird. Von da aus werde ich die normal mit Sverweis weiterarbeiten. ich denke das ist die beste und einfachste lösung. Allerdings brauche ich hilfe ne schon geposteten VBA Code anhzupassen.

Wäre super nett wenn du mir helfen könntest.
 

Neue Beiträge

Zurück