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

2 Tabellen auf Werte vergleichen

2 Tabellen auf Werte vergleichen
22.03.2017 12:38:32
Christian
Moin,
ich habe zwei Spalten, welche Nummern beinhalten. In der einen Spalte sind etwa 800 Werte in der anderen nur 780. Jetzt möchte ich wissen welche Zahlenwerte sind über. Eigentlich ganz Simpel aber ich bekomme es nicht hin. Die Werte die über sind, sollen dann quasi in eine neue Spalte übertragen werden.
Habt ihr Ideen?
Viele Grüße
Christian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Tabellen auf Werte vergleichen
22.03.2017 13:52:08
Anton
Hi Christian,
vielleicht etwas umständlich aber geht das in die Richtung?
Sub Vergleichen()
Dim lngZMaxA As Long
Dim lngZMaxB As Long
Dim y As Long
Dim wksBlatt As Worksheet
Set wksBlatt = ThisWorkbook.Worksheets("Tabelle3") 'Tabellenblatt anpassen
y = 1
With wksBlatt
lngZMaxA = .Cells(.Rows.Count, 1).End(xlUp).Row 'Maximale Länge Spalte A bestimmen
lngZMaxB = .Cells(.Rows.Count, 2).End(xlUp).Row 'Maximale Länge Spalte B bestimmen
If lngZMaxA > lngZMaxB Then
For i = lngZMaxB To lngZMaxA
.Cells(y, 6).Value = .Cells(i + 1, 1).Value 'Differenzwerte werden in Spalte 6  _
ab Zeile 1 geschrieben ggf. anpassen
y = y + 1
Next i
Else
For i = lngZMaxA To lngZMaxB
.Cells(y, 7).Value = .Cells(i + 1, 2).Value 'Differenzwerte werden in Spalte 7  _
ab Zeile 1 geschrieben ggf. anpassen
y = y + 1
Next i
End If
End With
End Sub
VG Anton
Anzeige
AW: 2 Tabellen auf Werte vergleichen
22.03.2017 14:13:59
Christian
Moin Anton und vielen Dank für deine Antwort.

Sub Vergleichen()
Dim lngZMaxA As Long
Dim lngZMaxB As Long
Dim y As Long
Dim wksBlatt As Worksheet
Set wksBlatt = ThisWorkbook.Worksheets("Tabelle1") 'Tabellenblatt anpassen
y = 3
With wksBlatt
lngZMaxA = .Cells(.Rows.Count, 2).End(xlUp).row 'Maximale Länge Spalte B bestimmen
lngZMaxB = .Cells(.Rows.Count, 4).End(xlUp).row 'Maximale Länge Spalte D bestimmen
If lngZMaxA > lngZMaxB Then
For i = lngZMaxB To lngZMaxA
.Cells(y, 6).Value = .Cells(i + 1, 1).Value 'Differenzwerte werden in Spalte 6  _
_
ab Zeile 3 geschrieben ggf. anpassen
y = y + 1
Next i
Else
' do nothing
End If
End With
End Sub
Ich möchte im Grunde 2 Spalten miteinander vergleichen und wenn die Materialnummern in irgendeiner Zelle voneinander abweichen, sollen diese Werte in eine Spalte geschrieben werden. Ich habe deinen Code mal ein wenig angepasst (Leider klappt er noch nicht) und eine Beispieldatei hochgeladen. In Tabelle 1 sind die Daten. Vielen Dank für deine Mühen :)
https://www.herber.de/bbs/user/112348.xlsm
Anzeige
AW: 2 Tabellen auf Werte vergleichen
22.03.2017 14:24:01
Fennek
Hallo,
anderer Vorschlag:
Unterschiede der Spalten B und D:

=ZÄHLENWENN(D3;$B$3:$B$795)
und danch Autofilter auf 0
mfg
AW: 2 Tabellen auf Werte vergleichen
22.03.2017 15:05:05
Christian
@Fennek genau so ging ich am Anfang auch an die Aufgabe heran.. bis ich dann merkte, das es gar nicht klappen kann. Angenommen, die beiden Werte sind nicht in der gleichen Zeile sondern die eine Materialnummer befindet sich in Zeile 4 und die andere in Zeile 29, dann zeigt mir die Funktion nur an, das es in der Zeile keine Übereinstimmung gab aber der Wert ist dennoch vorhanden. Kannst du mir folgen?
probier mal diesen Code...
22.03.2017 15:08:51
robert

Sub A_B()
Dim EndeA As Integer, EndeB As Integer, ZeileA As Integer, ZeileB As Integer, ZeileC As  _
Integer, Gefunden As Range
Application.ScreenUpdating = False  ' Abschalten Bildschirmaktualisierung
Columns(5).Clear
EndeA = Range("A1").End(xlDown).Row
EndeB = Range("B1").End(xlDown).Row
ZeileC = 1
If EndeA > EndeB Then
Cells(1, 4) = "Fehlt in B"
For ZeileA = 1 To EndeA
With Range(Cells(1, 2), Cells(EndeB, 2))
Set Gefunden = .Find(Cells(ZeileA, 1), , xlValues, xlWhole)
End With
If Gefunden Is Nothing Then
Cells(ZeileC, 5) = Cells(ZeileA, 1)
ZeileC = ZeileC + 1
End If
Next ZeileA
Else
Cells(1, 4) = "Fehlt in A"
For ZeileB = 1 To EndeB
With Range(Cells(1, 1), Cells(EndeA, 1))
Set Gefunden = .Find(Cells(ZeileB, 2), , xlValues, xlWhole)
End With
If Gefunden Is Nothing Then
Cells(ZeileC, 5) = Cells(ZeileB, 2)
ZeileC = ZeileC + 1
End If
Next ZeileB
End If
Application.ScreenUpdating = True  ' Einschalten Bildschirmaktualisierung
End Sub
Gruß
robert
Anzeige
AW: probier mal diesen Code...
23.03.2017 20:05:42
Christian
Ich wollte mich auf jeden Fall nochmal melden, erst mal vielen lieber Dank für den Code, ich bin gerade dabei ihn zu verstehen und auf meinen Fall anzuwenden. Also ich nehme mir auf keinen Fall einen Code ohne Danke oder einer Rückmeldung aber in den letzten Tagen war einfach zu viel los :)
AW: probier mal diesen Code...
23.03.2017 21:13:45
Christian
Nein Sorry aber ich versteh nicht, was du mit Spalte 4 vor hast. Ich habe zwei Spalte, einmal Spalte B und einmal Spalte D. Spalte B ist die Referenzspalte welche mit Spalte D verglichen werden soll. In Spalte F sollen dann die Zeilen reingeschrieben werden, die in Spalte D fehlen im Vergleich mit B. B hat mehr Zeilen als D. Daher will ich wissen, welche Zeilen fehlen da.
Kann mir einer vielleicht helfen? Ich fürchte mit diesen Quellcode wird es nichts. Ich stelle mir eigentlich eine ganz einfache Vergleichsfunktion vor.
Anbei eine aktuelle Testliste
https://www.herber.de/bbs/user/112384.xlsm
Anzeige
was soll da nicht funktionieren...
24.03.2017 08:11:50
robert
wenn du deine spalte B in spalte A kopiert hättest
und deine spalte D in spalte B, dann hättest du gesehen, dass der Code läuft!
im code dann die anpassung der spalten vornehmen, wäre auch keine kunst gewesen.
aber wenn du nicht mal dazu imstande bist-naja...
gruß
robert
AW: 2 Tabellen auf Werte vergleichen
23.03.2017 22:27:34
KlausF
Hallo Christian,
Code läuft ca 60 Sekunden:
Sub Vergleich()
Dim strSuche As String
Dim i As Long
Dim x As Long
Dim lastRowB As Long
Dim lastRowD As Long
lastRowB = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
lastRowD = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 3 To lastRowB
strSuche = Range("B" & i).Value
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row + 1) = strSuche
For x = 3 To lastRowD
If Range("D" & x) = strSuche Then
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row).ClearContents
Exit For
End If
Next x
Next i
For i = 3 To lastRowD
strSuche = Range("D" & i).Value
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row + 1) = strSuche
For x = 3 To lastRowB
If Range("B" & x) = strSuche Then
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row).ClearContents
Exit For
End If
Next x
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Gruß
Klaus
Anzeige
Korrektur
23.03.2017 22:43:52
KlausF
Hi,
habe erst jetzt gesehen, dass Du Deine Aussage noch einmal präzisierst hast
und nur Spalte B mit D vergleichen willst. Dann kann man sich die 2. Schleife sparen
(dauert jetzt ca 30 Sekunden):
Sub Vergleich()
Dim strSuche As String
Dim i As Long
Dim x As Long
Dim lastRowB As Long
Dim lastRowD As Long
lastRowB = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
lastRowD = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 3 To lastRowB
strSuche = Range("B" & i).Value
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row + 1) = strSuche
For x = 3 To lastRowD
If Range("D" & x) = strSuche Then
Range("F" & Cells(Rows.Count, "F").End(xlUp).Row).ClearContents
Exit For
End If
Next x
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Gruß
Klaus
Anzeige
AW: 2 Tabellen auf Werte vergleichen
23.03.2017 22:44:32
Christian
Wahnsinn Klaus, das ist echt krass. Der Code läuft auf Anhieb und sogar in 5 sekunden bei mir :) Und ich verstehe auch die Struktur und den Ablauf. Der Code ist wirklich sehr hilfreich um noch stärker in die Materie vorzudringen. Vielen Dank.
Viele Grüße
Christian
Gerne, aber ...
23.03.2017 23:00:00
KlausF
Hi Christian,
danke für die Rückmeldung. Aber beachte auch die Korrektur!
In diesem Code wird auch noch D mit B verglichen und das ist
ja überflüssig (um nicht zu sagen: Falsch)
Gruß
Klaus

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige