Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
516to520
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
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabelle vergleichen

Tabelle vergleichen
19.11.2004 01:24:04
Schinnerl
Es ist mir klar, dass in diesem Forum das Thema "Spalten in zwei Tabellenblätter vergleichen" schon in vielen Spielarten durchgenommen wurde. Untenstehender Code vergleicht mir Tabelle1 Spalte1/2 mit Tabelle2 Spalte1/2, filtert mit "AdvancedFilter Action:=xlFilterCopy" alle Duplikate heraus und speichert das neue Ergebnis in Tabelle3 (eine Summe aller Datensätze ohne Duplikate in Tabelle3.
Wo ich schon eine ganze Weile herumbastle und zu keiner vernünftigen Lösung komme ist das umgekehrte: ich möchte in Tabelle3 nur die Duplikate herausgefiltert. Wie geht das? Danke für einen Tipp.
Sebastian

Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rngA As Range, rngB As Range
Dim iRow As Integer, iCounter As Integer, iCol As Integer
Application.ScreenUpdating = False
Set rngA = Worksheets("Tabelle1").Range("A1").CurrentRegion
Set rngB = Worksheets("Tabelle2").Range("A1").CurrentRegion
Set wks = Worksheets("Tabelle3")
iCol = rngA.Columns.Count
If rngB.Columns.Count > iCol Then
iCol = rngB.Columns.Count
End If
For iCounter = 1 To iCol
wks.Cells(1, iCounter) = "Spalte" & iCounter
Next iCounter
wks.Rows(1).Font.Bold = True
rngA.Range("A1").CurrentRegion.Copy wks.Range("A2")
iRow = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
rngB.Range("A1").CurrentRegion.Copy wks.Cells(iRow, 1)
wks.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=wks.Cells(1, wks.UsedRange.Columns.Count + 1), _
Unique:=True
wks.Range(wks.Cells(1, 1), wks.Cells(1, iCol)). _
EntireColumn.Delete
wks.Columns.AutoFit
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle vergleichen
Volker
Hallo Sebastian,
nach dem Kopieren der 2x2 Spalte nach Tabelle3 nach Spalte A und B sortieren
und dann ganz primitiv von oben nach unten durchgehen:

Sub nur_doppelte()
i = 2
While Cells(i, 1) <> ""
If Cells(i, 1) <> Cells(i + 1, 1) Then
Rows(i).Delete
ElseIf Cells(i, 2) <> Cells(i + 1, 2) Then
Rows(i).Delete
Else
'i = i + 1
While Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2)
Rows(i + 1).Delete
Wend
i = i + 1
End If
Wend
End Sub

Gruß
Volker
AW: Tabelle vergleichen
19.11.2004 12:44:17
Sebastian
Danke, Volkert. Dein Programm funktioniert, sobald sortiert wurde. Ich bin jetzt allerdings schon eine Stunde am rumbasteln, warum das Sortieren nicht funktioniert.
Natürlich übersehe ich eine Kleinigkeit... learning-by-probiering... Ohne die wksA-SET-Variable kommt keine Fehlermeldung, dann allerdings sortiert er mir Tabelle1, mit der wksA-SET-Variablen bringt er einen Laufzeitfehler.

Private Sub CommandButton1_Click()
Dim Target As Range
Dim wks As Worksheet
Dim rngA As Range, rngB As Range
Dim iRow As Integer, iCounter As Integer, iCol As Integer
Application.ScreenUpdating = False
Set rngA = Worksheets("Tabelle1").Range("A1").CurrentRegion
Set rngB = Worksheets("Tabelle2").Range("A1").CurrentRegion
Set wks = Worksheets("Tabelle3")
Set wksA = Worksheets("Tabelle3").Range("A1").CurrentRegion
'SpalteA,B von Tabelle1 und Tabelle2 werden nach Tabelle3 kopiert
iCol = rngA.Columns.Count
If rngB.Columns.Count > iCol Then
iCol = rngB.Columns.Count
End If
For iCounter = 1 To iCol
wks.Cells(1, iCounter) = "Spalte" & iCounter
Next iCounter
wks.Rows(1).Font.Bold = True
rngA.Range("A1").CurrentRegion.Copy wks.Range("A2")
iRow = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
rngB.Range("A1").CurrentRegion.Copy wks.Cells(iRow, 1)
'Sprung auf Überschrift von Tabelle3
Application.Goto Reference:="Extract"
'Sortieren von Tabelle 3
wksA.Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Datensatzduplikate herausfiltern (by Volkert)
i = 2
While Cells(i, 1) <> ""
If Cells(i, 1) <> Cells(i + 1, 1) Then
Rows(i).Delete
ElseIf Cells(i, 2) <> Cells(i + 1, 2) Then
Rows(i).Delete
Else
While Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2)
Rows(i + 1).Delete
Wend
i = i + 1
End If
Wend
wks.Columns.AutoFit
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige