Anzeige
Archiv - Navigation
808to812
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
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalte A mit B vergleichen; in neue Tabelle

Spalte A mit B vergleichen; in neue Tabelle
15.10.2006 12:00:27
Wolfgang
Hallo*
mit folgendem Code wird in einem Einzelblatt der Inhalt von Spalte A mit Spalte B verglichen und das Ergebnis (ich würde hier gerne auch zwei Möglichkeiten gestalten: a) Abgleich, welche Inhalte zwischen A und B nicht doppelt vorhanden sind; b) Abgleich welche Inhalte zwischen A und B doppelt sind) wird in Spalte C ausgeworfen. Dieser Code zeigt die Werte zwischen A und B an, die nicht jeweils in der einen oder anderen Spalte vorhanden sind. Wie könnte der Code geändert werden, wenn ich als Ergebnis sämtliche Doppeleinträge zwischen A und B angezeigt bekommen möchte (Soll dann als getrennter Code eingebaut werden)und die Abfrage (bzw. beide Abfragen) auf die komplette Arbeitsmappe (außer Tabelle "Start" und "Steuerung") Anwendung finden soll? Danke schon jetzt Allen wieder für die Rückmeldungen.
Herzliche Grüße
Wolfgang
Option Explicit

Sub VergleichA_B()
Dim ALetzte As Long, BLetzte As Long, iCounter As Long, xCounter As Long
Dim xZelle As Range
ALetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(-4162).Row, Rows.Count)
BLetzte = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(-4162).Row, Rows.Count)
For iCounter = 1 To ALetzte
Set xZelle = Columns(2).Find(what:=Cells(iCounter, 1), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
Cells(xCounter, 3) = Cells(iCounter, 1)
End If
Next iCounter
For iCounter = 1 To BLetzte
Set xZelle = Columns(1).Find(what:=Cells(iCounter, 2), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
Cells(xCounter, 3) = Cells(iCounter, 2)
End If
Next iCounter
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalte A mit B vergleichen; in neue Tabelle
15.10.2006 15:25:26
fcs
Hallo Wolfgang,
hier schon mal die Variante, die mehrere Blätter innerhalb der Arbeitsmappe mit einigen Ausnahmen abarbeitet.
Die Konstruktion sollte dir vom letzten Problem her bekannt vorkommen. :-)
Gruss
Franz

Sub VergleichA_B()
'Nur in der jeweils anderen Spalte nicht vorhandene Einträge werden in Spalte C gelistet
Dim ALetzte As Long, BLetzte As Long, iCounter As Long, xCounter As Long
Dim xZelle As Range, wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
With wks
If Not (.Name = "Start" Or wks.Name = "Steuerung") Then
'vorhandene Daten in Spalte C löschen
.Columns(3).ClearContents
ALetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(-4162).Row, .Rows.Count)
BLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(-4162).Row, .Rows.Count)
For iCounter = 1 To ALetzte
Set xZelle = .Columns(2).Find(what:=.Cells(iCounter, 1), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
.Cells(xCounter, 3) = .Cells(iCounter, 1)
End If
Next iCounter
For iCounter = 1 To BLetzte
Set xZelle = .Columns(1).Find(what:=.Cells(iCounter, 2), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
.Cells(xCounter, 3) = .Cells(iCounter, 2)
End If
Next iCounter
End If
End With
Next wks
End Sub

Anzeige
AW: Spalte A mit B vergleichen - Korrektur
15.10.2006 15:48:12
fcs
Hallo Wolfgang,
da war noch ein kleiner Fehler in der Prozedur. Ich hatte vergessen die Variable "xCounter"
vor dem abarbeiten des nächsten Blattes auf 0 zu setzen.
Gruss
Franz

Sub VergleichA_B()
'Nur in der jeweils anderen Spalte nicht vorhandene Einträge werden in Spalte C gelistet
Dim ALetzte As Long, BLetzte As Long, iCounter As Long, xCounter As Long
Dim xZelle As Range, wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
With wks
If Not (.Name = "Start" Or wks.Name = "Steuerung") Then
'vorhandene Daten in Spalte C löschen
.Columns(3).ClearContents
ALetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(-4162).Row, .Rows.Count)
BLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 2)), .Cells(.Rows.Count, 2).End(-4162).Row, .Rows.Count)
For iCounter = 1 To ALetzte
Set xZelle = .Columns(2).Find(what:=.Cells(iCounter, 1), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
.Cells(xCounter, 3) = .Cells(iCounter, 1)
End If
Next iCounter
For iCounter = 1 To BLetzte
Set xZelle = .Columns(1).Find(what:=.Cells(iCounter, 2), Lookat:=xlWhole)
If xZelle Is Nothing Then
xCounter = xCounter + 1
.Cells(xCounter, 3) = .Cells(iCounter, 2)
End If
Next iCounter
End If
End With
xCounter = 0
Next wks
End Sub

Anzeige
AW: Spalte A mit B vergleichen; in neue Tabelle
15.10.2006 15:42:26
fcs
Hallo Wolfgang,
hier die Variante die nur die in A und B vorhandenen Einträge in Spalte C listet
Gruss
Franz

Sub VergleichA_B_Doppelte()
'Nur in A und B vorkommende Einträge (doppelte) werden in Spalte C gelistet
Dim ALetzte As Long, iCounter As Long, xCounter As Long
Dim xZelle As Range, wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
With wks
If Not (.Name = "Start" Or wks.Name = "Steuerung") Then
'vorhandene Daten in Spalte C löschen
.Columns(3).ClearContents
ALetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(-4162).Row, .Rows.Count)
For iCounter = 1 To ALetzte
Set xZelle = .Columns(2).Find(what:=.Cells(iCounter, 1), Lookat:=xlWhole)
If Not xZelle Is Nothing Then
xCounter = xCounter + 1
.Cells(xCounter, 3) = .Cells(iCounter, 1)
End If
Next iCounter
End If
End With
xCounter = 0
Next wks
End Sub

Anzeige
erneut herzlichen Dank, Franz!!
15.10.2006 17:08:58
Wolfgang
Hallo Franz,
erneut meinen tiefsten Dank für Deine Rückmeldung und Ausarbeitungen; Ich hatte den bisherigen Code soweit eingebaut, um dann festzustellen, dass es ja sinnvoller ist, alle Tabellenblätter auf einmal auwerten zu lassen, anstatt jedes Tabellenblatt einzeln. Ich glaube, auf Grund Deiner ergänzenden Hinweise, jetzt zu wissen, wie ich einen Code evtl. auf eine Arbeitsmappe und nicht nur für ein Tabellenblatt anwenden kann. Beide Codes von Dir laufen übrigens hervorragend auch dafür meinen herzlichen Dank. Ich wünsche Dir noch einen schönen Sonntag.
Gruß - Wolfgang

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige