Clever-Excel-Forum

Normale Version: Listen gegeneinander laufen lassen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich habe ein Problem, das ich als relativer Excel-Noob in meinem Gehirn nicht verbacken bekomme. Ich habe zwei Excel-Dateien.
In der ersten  Datei habe ich eine Tabelle mit mehreren tausend Zeilen, verschiedene Problemberichte werden darin aufgelistet. Diese Problemberichte betreffen immer eine bestimmte Charge.

Ich hab das mal exemplarisch als "Liste 1.PNG" eingefügt und stark vereinfacht, damit man es lesen kann. :)

Dann habe ich eine zweite Datei. In der habe ich nur Chargen drin - diejenigen, die ich auf Lager habe.

Das habe ich als "Liste 2.PNG" angefügt.

Von den Chargen in Liste 1 werden einige in Liste 2 vorkommen, allerdings in keiner bestimmten Reihenfolge. Genau diese muss ich aber finden. Also alle Chargen aus Liste 1, die in Liste 2 vorkommen oder umgekehrt. Und das Ganze dann in Liste 1 markieren: in Liste 1 soll mir angezeigt werden, welche problembehafteten Chargen ich auf Lager (also in Liste 2) habe.

Ist das irgendwie verständlich? Falls ja, wäre ich um jede Hilfe sehr, sehr dankbar.
Schönen Abend und danke vorab!
Hallo,

stelle bitte statt der Bildchen eine Datei ein.
Hallo s...,

wenn du deine Tabellen als "strukturierte" Tabellen einrichtest und sprechend benennst, kann man die Formel auch in grösseren Tabellen gut lesen (und du kannst die Tabellen beliebig verschieben und erweitern ohne die Formeln mit den strukturierten Verweisen ändern zu müssen).
Zitat:=ZÄHLENWENN(Probleme[Produktcharge];[@Produktcharge])

Ansonsten die strukturierten Verweise durch einfache Verweise ersetzen.
Ich bin für einen INNER JOIN von zwei Tabellen
Code:
Option Explicit

'SELECT Liste1.Problemnummer, Liste1.Produktcharge
'FROM Liste1 INNER JOIN Liste2 ON Liste1.Produktcharge = Liste2.Produktcharge;


Sub AdoTestInnerJoin()

Dim rs As ADODB.Recordset
Dim Conn As String
Dim query As String

   Conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
          & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES;"";"

   'query = "SELECT [Liste1$].[Problemnummer], [Liste1$].[Produktcharge] FROM [Liste1$] INNER JOIN [Liste2$] ON [Liste1$].[Produktcharge] = [Liste2$].[Produktcharge];"
   query = "SELECT * FROM [Liste1$] INNER JOIN [Liste2$] ON [Liste1$].[Produktcharge] = [Liste2$].[Produktcharge];"

   Set rs = New ADODB.Recordset
   rs.Open query, Conn, adOpenForwardOnly, adLockReadOnly, adCmdText
   If Not rs.EOF Then
       ThisWorkbook.Worksheets("Join").Cells.ClearContents
       ThisWorkbook.Worksheets("Join").Range("A1").CopyFromRecordset rs
   Else
       MsgBox "no records"
   End If

   rs.Close

End Sub

@Klaus Dieter: Ich gebe Dir recht, Beispieldatei wäre besser gewesen. Aber in diesem Fall egal, weil ich mal wieder ADODB mit Excel üben wollte.