Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
692to696
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
692to696
692to696
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Datenvergleich über 2 Tabellen

VBA Datenvergleich über 2 Tabellen
14.11.2005 11:20:45
bluedave1979@web.de
Hallo,
ich suche dringend Hilfe. Ich habe schon alles probiert, was ich kenne jedoch ohne Erfolg.
Ich möchte aus Tabelle1 den Inhalt (Postleitzahlen) von Spalte F mit dem Inhalt von Tabelle2 Spalte B auch Postleitzahlen überprüfen. Wenn eine PLZ aus Tabelle1 mit keiner aus Tabelle2 übereinstimmt, soll in Tabelle1 Spalte G der Eintrag falsch stehen. Wenn eine PLZ mit einer aus Tabelle2 übereinstimmt wahr. Die Zeilenlänge in Tabelle1 und 2 kann sich ändern, so dass dies auch über Variabelen glöst werden sollte und die einzelnen PLZs aus Tabelle1 müssen mit jeder aus Tabelle2 geprüft werden.
Ich danke jetzt schon für die Hilfe.
Viele Grüße
David

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datenvergleich über 2 Tabellen
14.11.2005 11:47:21
Susanne
Hallo David,
hast du schon mal den S-Verweis probiert?
Gruß
Susanne
AW: VBA Datenvergleich über 2 Tabellen
14.11.2005 11:50:38
Bluedave
Hallo,
da die Tabellen anschliessend noch bearbeitet und verschoben werden (auch über VBA Makros), läßt sich die Aufgabe nur mit VBA lösen.
Danke für die schnelle Antwort
Dave
Datenvergleich 2 Tabellen - bedignte Formatierung
14.11.2005 12:13:04
Beate
Hallo David,
du könntest es auch über bedingte Formatierung lösen und dir damit die Hilfsspalte in Tabelle 1 sparen. So wird verglichen, ob die PLZ Tabelle1 Spalte G in Tabelle2 Spalte B vorkommen und wenn nicht, werden falsche PLZen markiert:
Tabelle1
 G
150389
250321
374896
412356
585489
Bedingte Formatierungen der Tabelle
ZelleNr.: / BedingungFormat
G11. / Formel ist =G1<>INDIREKT(ADRESSE(ZEILE();SPALTE()-5;4;1;"Tabelle2"))Abc
G21. / Formel ist =G2<>INDIREKT(ADRESSE(ZEILE();SPALTE()-5;4;1;"Tabelle2"))Abc
G31. / Formel ist =G3<>INDIREKT(ADRESSE(ZEILE();SPALTE()-5;4;1;"Tabelle2"))Abc
G41. / Formel ist =G4<>INDIREKT(ADRESSE(ZEILE();SPALTE()-5;4;1;"Tabelle2"))Abc
G51. / Formel ist =G5<>INDIREKT(ADRESSE(ZEILE();SPALTE()-5;4;1;"Tabelle2"))Abc
 

Gruß,
Beate
Anzeige
muss mit VBA gelöst werden
14.11.2005 12:16:18
BlueDave
Hallo,
die Lösung muss leider mit VBA geschehen.
Danke für die Hilfe
Gruß
David
AW: muss mit VBA gelöst werden
14.11.2005 12:26:35
Beate
Hallo,
ich würde doch mal davon ausgehen, dass der Fehler direkt bei Erfassung behoben wird, wenn er derartig sichtbar wird. Es würden doch somit nur korrekte Daten in die nächste Datei übertragen. Und eine Fehlersuche dort wäre dann überflüssig. Aber du wirst schon deine Gründe haben...
Gruß,
Beate
AW: muss mit VBA gelöst werden
14.11.2005 12:32:29
BlueDave
Hi,
die Datenmengen sind einfach zu groß, um sie selbst zu kontrollieren. Deswegen habe ich alles automatiesert bis auf das Problem, weil ich es nicht gelöst bekomme.
Viele Grüße
Dave
Anzeige
AW: muss mit VBA gelöst werden
14.11.2005 12:53:26
Heiko
Hallo Dave,
so könnte es gehen.
Vorraussetzung beide Blätter sind in einer Arbeitsmappe und sind Tabelle1 und Tabelle2, sonst mußt du den Code noch etwas anpassen.

Sub Vergleich()
Dim BooDrin As Boolean
Dim lngLastRow1 As Long, lngLastRow2 As Long, lngCounter As Long
Dim rngFind As Range
Dim varFirstAddress As Variant
lngLastRow1 = Worksheets("Tabelle1").Cells(Rows.Count, 6).End(xlUp).Row
lngLastRow2 = Worksheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
For lngCounter = 1 To lngLastRow1
BooDrin = False
With Worksheets("Tabelle2").Range("B1:B" & lngLastRow2)
Set rngFind = .Find(Worksheets("Tabelle1").Cells(lngCounter, 6), LookIn:=xlValues)
If Not rngFind Is Nothing Then
varFirstAddress = rngFind.Address
Do
Worksheets("Tabelle1").Cells(lngCounter, 7) = "Wahr"
BooDrin = True
Exit Do
Loop While Not rngFind Is Nothing And rngFind.Address <> varFirstAddress
End If
If BooDrin = False Then Worksheets("Tabelle1").Cells(lngCounter, 7) = "Falsch"
End With
Next lngCounter
Application.ScreenUpdating = True
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: muss mit VBA gelöst werden
14.11.2005 13:57:00
Dave
DANKE super ding klappt bis auf einen keinen Schöhnheitsfehler bei einer PLZ in Tabelle 1 mit einer Zeichenlänge von 6 zeigt er falsch (das ist ok) bei einer Zeichenlänge von 4 zeigt er wahr an was natürlich nicht stimmt, weil die zahl in tab2 nicht enhalten ist.
AW: muss mit VBA gelöst werden
14.11.2005 14:00:36
Heiko
Hallo Dave,
dann diese Zeile
Set rngFind = .Find(Worksheets("Tabelle1").Cells(lngCounter, 6), LookIn:=xlValues)
so ändern:
Set rngFind = .Find(Worksheets("Tabelle1").Cells(lngCounter, 6), LookIn:=xlValues, LookAt:=xlWhole)
Aber nimm mal die Lösung von bst, die ist 5 mal so schnell wie meine.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: muss mit VBA gelöst werden
14.11.2005 14:01:52
Dave
Danke nochmal klappt super habe es noch einmal richtig eingefügt und es klappt einwand frei - also danke für deine Mühe!!!!
AW: muss mit VBA gelöst werden
14.11.2005 13:05:51
bst
Auch Hallo,
HTH, Bernd
--
Option Explicit

Sub x()
   Dim Zelle As Range, src As Range
   
   Set src = Range(Worksheets(2).Cells(1, 2), Worksheets(2).Cells(1, 2).End(xlDown))
   
   With Worksheets(1)
      For Each Zelle In Range(.Cells(1, 6), .Cells(1, 6).End(xlDown))
         Zelle.Offset(0, 1).Value = CBool(Application.WorksheetFunction.CountIf(src, Zelle))
      Next
   End With
End Sub

Anzeige
AW: muss mit VBA gelöst werden
14.11.2005 14:06:59
Dave
Hi,
danke für die Mühe leider bekomme ich den Code nicht vernünftig verarbeitet. Bei mir bekomme ich immer die Ausgabe falsch.
AW: muss mit VBA gelöst werden
14.11.2005 14:23:54
DAve
Hi Bernd,
geht jetzt bei mit auch - das lag daran dass in der 2ten Tabelle die erste zeile leer war. Habe aber noch eine Frage (ich hoffe das nervt nicht). Wo kann ich bestimmen in welche Spalte die Ausgabe kommt?
Gruß
David
AW: muss mit VBA gelöst werden
14.11.2005 14:31:52
bst
Hallo David,
ändere Offset(0, 1). Die 1. Zahl verschiebt zeilenweise (hier um 0 Zeilen nach unten) die 2. Zahl verschiebt spaltenweise (hier um eine Spalte nach rechts).
Negative Werte verschieben jeweils in die andere Richtung.
HTH, Bernd
Anzeige
AW: muss mit VBA gelöst werden
14.11.2005 14:37:29
Dave
Hi Bernd,
danke dadurch ist mein Tag gerettet. Vielen Dank noch einmal und eine schöne Woche
Viele Grüße
David
OwT: Bitteschön und gleichfalls
14.11.2005 14:39:04
bst
.
OwT: Bitteschön und gleichfalls
14.11.2005 14:39:09
bst
.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige