Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For Schleife / Suche in 2 Tabellen

For Schleife / Suche in 2 Tabellen
16.06.2023 10:26:10
sndrjng

Hallo! Ich bin komplett neu hier und versuche mich gerade VBA zu lernen.
Ich benötige allerdings eure Hilfe.

Ich habe ein Excel Arbeitsblatt mit zwei Tabellen. Nun benötige ich eine Schleife, welche nach übereinstimmenden Worten in beiden Tabellen sucht. Sobald ein Wort gefunden wurde, was in beiden Tabellen vorkommt, soll eine neue Tabelle mit 4 neuen Spalten generiert werden. Ich versuche es mal zu veranschaulichen:

Tabelle1:
- hat zwei Spalten
- in Spalte 1 stehen die Worte die verglichen werden sollen
- ist maximal 5 Zeilen lang

Tabelle2:
- auch zwei Spalten
- in Spalte 1 stehen ebenfalls die Worte die vergleichen werden sollen
- in Spalte zwei steht Text, welcher als Tabellenüberschrift gezogen werden soll

So richtig finde ich mich nicht rein - vielleicht kann mir ja hier jemand helfen!
DANKE! :)

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For Schleife / Suche in 2 Tabellen
16.06.2023 11:10:43
Yal
Hallo Sndr (man spricht sich im Forum per Vorname an ;-)

Wenn Du VBA lernen möchtest, sei willkommen.

Nun, bei dem Vergleich zwischen 2 Tabellen (auch "intelligente" Tabelle benannt, also durch "Einfügen", "Tabelle" erzeugt) ist am besten Power Query anzuwenden: beide Tabelle in PQ anbinden, join, als neue Tabelle herausgeben.
Siehe https://excelhero.de/power-query/power-query-ganz-einfach-erklaert

VBA mit ListObjects, wie aktive Tabelle in VBA heissen, ist nicht ganz der einfachste Einstieg, aber machbar ist es trotzdem.
Folgende Code habe ich nicht getestet, weil ich keine Datei nachbaue (trifft nie das Original), sollte aber Pi-mal-Daumen passen:

Sub Vergleich()
Dim t1 As ListObject
Dim t2 As ListObject
Dim t3 As ListObject
Dim R1 As ListRow
Dim R2 As ListRow

    Set t1 = Range("Tabelle1").Parent.ListObjects("Tabelle1") 'auf Name der Tabelle anpassen
    Set t2 = Range("Tabelle2").Parent.ListObjects("Tabelle2") 'auf Name der Tabelle anpassen
    Set t3 = Range("Tabelle3").Parent.ListObjects("Tabelle3") 'auf Name der Tabelle anpassen
'Ziel-Tabelle vorher leeren, falls erwünscht
    t3.DataBodyRange.Delete
'prüfen und übertragen
    For Each R1 In t1.ListRows
        For Each R2 In t2.ListRows
            If R1.Range.Cells(1).Value = R2.Range.Cells(1).Value Then 'Da R1 und R2 je eine Einzelzeile sind, ist der Index gleich Spalte der jeweilige Tabelle, also in beide die erste Spalte. 
                With t3.ListRows.Add
                    .Range.Cells(1) = R1.Range.Cells(1)
                    .Range.Cells(2) = R1.Range.Cells(2)
                    .Range.Cells(3) = R2.Range.Cells(1)
                    .Range.Cells(4) = R2.Range.Cells(2)
                End If
            End If
        Next
    Next
End Sub
VG
Yal

Anzeige

104 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige