Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Vergleichen von Zeilen mittels VBA

Vergleichen von Zeilen mittels VBA
25.06.2020 12:25:14
Zeilen
Hallo zusammen!
Ich bin neu in diesem Forum, da ich sonst nie wirklich aktiv Foren benutzt habe.
Jetzt gerade bin ich aber gefühlt mit meinem Latein am Ende, weshalb ich mal versuchen wollte, um Rat zu fragen.
Ich versuche euch das Problem so gut wie möglich zu schildern, da mir nicht wirklich eine Methode einfällt, wie ich mein Vorhaben in Code umsetzen könnte.
Ich habe 2 Tabellenblätter, in denen viele Daten stehen. Die Zeilenanzahl ist immer unterschiedlich, aber die Spaltenanzahl ist bei beiden gleich. Zwischen den beiden Tabellenblättern ist die Zeilenanzahl auch unterschiedlich (im ersten Tabellenblatt sind es z.B. 800 Zeilen, im Zweiten 5000).
Ich möchte nun aus dem ersten Tabellenblatt eine gesamte Zeile nehmen (ich benötige die Werte aus der Zeile in der richtigen Reihenfolge, nicht nur die Range), und in dem zweiten Tabellenblatt nach dieser gesamten Zeile suchen, ob es eine identische Zeile mit den gleichen Werten gibt.
Beispiel: Ich suche Zeile 10 aus dem ersten Tabellenblatt. Die ist aber nicht ebenfalls Zeile 10 im zweiten Tabellenblatt, sondern kann auch erst Zeile 1000, Zeile 2000 oder Zeile 5 sein. Das ist immer unterschiedlich.
Wenn es die gesuchte Zeile im zweiten Tabellenblatt aber nicht gibt, soll die Zeile aus dem ersten Tabellenblatt im zweiten Tabellenblatt hinzugefügt werden.
Das Ganze soll mit jeder Zeile aus dem ersten Tabellenblatt durchgeführt werden, bis die letzte gefüllte Zeile auf diese Weise geprüft würde.
Meine Idee war, die Zeile aus dem ersten Tabellenblatt, die gesucht wird, vielleicht als Array zu speichern, aber irgendwie bin ich dann über das weitere Vorgehen im Code nicht ganz klar (wie ich das ganze dann im zweiten Tabellenblatt "suchen" soll) und wie sinnvoll das Ganze ist.
Ich hoffe, dass ich alles verständlich genug erklärt habe. Vielleicht kann mir ja jemand einen Tipp geben, der mir in dieser Sache weiterhilft.
Danke und viele Grüße!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ansatz
25.06.2020 12:45:12
Fennek
Hallo,
ein Ansatz ist es, jede Zeile in eine Zelle zusammenzufassen. Dann können 2 sheets leicht mit dem "=sverweis()" verglichen werden.

Dim alt1
alt = Sheets("alt").Cells(1).CurrentRegion
ReDim alt1(UBound(alt))
For i = 1 To UBound(alt)
alt1(i) = Join(Application.Index(alt, i, 0), ";")
Next i
mfg
AW: Vergleichen von Zeilen mittels VBA
25.06.2020 14:42:21
Zeilen
Hallo,
wenn die Tabellen nur Festwerte enthalten:
Sub TabVergleich()
Dim arr, i, s
Dim oDic1 As Object, oDic2 As Object, oObj
Set oDic1 = CreateObject("scripting.dictionary")
Set oDic2 = CreateObject("scripting.dictionary")
arr = Tabelle1.Cells(1, 1).CurrentRegion
For i = 1 To UBound(arr)
s = Join(Application.Index(arr, i), "|")
oDic1(s) = Application.Index(arr, i)
Next i
arr = Tabelle2.Cells(1, 1).CurrentRegion
For i = 1 To UBound(arr)
s = Join(Application.Index(arr, i), "|")
oDic2(s) = Application.Index(arr, i)
Next i
For Each oObj In oDic1
If Not oDic2.exists(oObj) Then
oDic2(oObj) = oDic1(oObj)
End If
Next oObj
arr = oDic2.items
arr = Application.Transpose(arr)
arr = Application.Transpose(arr)
Tabelle2.Cells(1, 1).CurrentRegion.Resize(oDic2.Count) = arr
End Sub

Gruß
Rudi
Anzeige
AW: Vergleichen von Zeilen mittels VBA
25.06.2020 16:01:25
Zeilen
Hallo Rudi,
vielen Dank für deine Mühe, dein Code hat mir bei meinem Problem sehr weitergeholfen! Das war praktisch genau das, was ich suchte. Eine Variante mit Dictionary ist mir nicht eingefallen.
Vielen lieben Dank!
Viele Grüße,
Channii

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige