Zwei Tabellen vergleichen
#1
Hallo,
habe folgendes Problem, welches ich vorzugsweise mit VBA lösen möchte. 
(siehe Beispiel-Datei im Anhang)
- In Tabellenblatt1 stehen in Spalte A nur Zahlen; es gibt in Spalte A keine leeren Zellen; die Zahlen sind in keiner bestimmten Reihenfolge sortiert (Kundennummern); in Realität sind hier ca. 200 jeweils siebenstellige Zahlen in A1-ca. A200; in diesem Tabellblatt stehen ausschließlich die Zahlen in Spalte A, alle anderen Spalten sind leer
- In Tabellenblatt2 stehen in Spalte K ab Zeile 14 ebenfalls nur Zahlen; es gibt ebenfalls keine leeren Zellen; die Zahlen sind ebenfalls in keiner bestimmten Reihenfolge sortiert (Kundennummern); in Realität sind hier jeweils ca. 20 siebenstellige Zahlen in K14-ca. K34; habe im Beispiel die übrigen Felder mit "x" ausgefüllt, hier befindet sich normalerweise Text, der nicht gelöscht werden soll, aber nicht relevant ist
- jetzt soll überprüft werden, ob eine Zahl aus Tabellenblatt2 Spalte K sich bereits in Tabellenblatt1 Spalte A befindet
- falls ja, soll nichts geschehen
- falls nein, soll die Zahl aus Tabellenblatt2 in Tabellenblatt1 Spalte A unten angefügt werden
- insgesamt soll so das Tabellblatt2 Spalte K durchsucht werden, bis eine freie Zelle auftaucht (bis also keine Zahleneintragungen mehr vorhanden sind)

Habe schon im Archiv gesucht und viele ähnliche Anfragen gefunden, konnte aber (aufgrund mickriger VBA-Kenntnisse :@ ) keine davon auf mein Problem anpassen...

Wäre für jede Hilfe äußerst dankbar!

Monty


Angehängte Dateien
.xlsx   beispiel.xlsx (Größe: 9,55 KB / Downloads: 2)
Top
#2
Hallo,

wenn ich Dich richtig verstanden habe, dann findest Du die letzte belegte Zeile so:

Zitat:Option Explicit

Sub LetzteZeile()
'letzte belegte Zeile in Spalte A
Dim LetzteZeile As Long
LetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row

' Die Box kannst Du problemlos entfernen, sie dient hier nur zu Demonstrationszwecken
MsgBox LetzteZeile
End Sub

Bei Dir böte sich die Spalte A oder die Spalte K an, weil beide Deiner Aussage nach lückenlos befüllt sind.
Nimmst Du die Spalte A, kannst Du das Makro 1:1 übernehmen.
Nimmst Du die Spalte K, mußt Du im Code aus der 1 eine 11 machen.
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • monty
Top
#3
Hallo Monty,

aktiviere die 2. Tabelle und starte dieses Makro:
Sub Abgleich()
 Dim lngZ As Long
 lngZ = 14
 Do Until Cells(lngZ, 11) = ""
   If IsError(Application.Match(Cells(lngZ, 11).Value, Tabelle1.Columns(1), 0)) Then
     Tabelle1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = Cells(lngZ, 11).Value
   End If
   lngZ = lngZ + 1
 Loop
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • monty
Top
#4
(31.08.2016, 12:24)Hallo Uwe,vielen Dank - funktioniert genau wie gewünscht!Ganz große Klasse!Monty Kuwer schrieb: Hallo Monty,

aktiviere die 2. Tabelle und starte dieses Makro:
Sub Abgleich()
 Dim lngZ As Long
 lngZ = 14
 Do Until Cells(lngZ, 11) = ""
   If IsError(Application.Match(Cells(lngZ, 11).Value, Tabelle1.Columns(1), 0)) Then
     Tabelle1.Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = Cells(lngZ, 11).Value
   End If
   lngZ = lngZ + 1
 Loop
End Sub
Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste