HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Entdecke rund 2 Millionen Excel-Lösungen im
Forumsarchiv
Forumbeitrag
Excel-Version des Fragestellers:
2022
Erfahrungslevel des Fragestellers:
VBA nur mit Recorder
UweD
26.05.2026 16:33:23
AW: nur neue Daten kopieren. Spalte 1+2 (Datum/Uhrzeit)
Hallo

Meine Annahme

Quelle:
Datum steht in A
Zeit in B
Arbeitsblatt mit dem Namen 'Tabelle2'
 ABCDEFG
1DatZtT1T2T3T4T5
201.01.202614:20A1  3
301.01.202612:20b2  33
402.01.202614:20c3  333
503.01.202615:20d4  3333


Ziel:
Datum+Zeit stehen in A
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCD
1U1   
2    
3    
4    
5    
601.01.2026 14:20   
701.01.2026 12:20   
803.01.2026 15:20   


Sub Datenabgleich_Schluessel()

Dim wbQuelle As Workbook, wksQuelle As Worksheet
Dim wbZiel As Workbook, wksZiel As Worksheet
Dim varSchluessel, lSpalteSchluessel As Long, Zelle As Range
Dim ZeileQuelle As Long, ZeileZiel As Long
Dim LC As Integer

' Tabelle mit ggf. neuen Daten
Set wbQuelle = Workbooks("MappeDaten.xlsx") ' Name anpassen!
Set wksQuelle = wbQuelle.Worksheets("Tabelle2") ' Name anpassen
' Tabelle in der Inhalte eingetragen werden sollen
Set wbZiel = Workbooks("MappeZiel.xlsx") ' Name anpassen!
Set wksZiel = wbZiel.Worksheets("Tabelle1") ' Name anpassen
' Nr. der Schlüsselspalte
lSpalteSchluessel = 1 ' ggf. anpassen

' Letzte Spalte Quelle ermitteln
LC = wksQuelle.Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten Blattes
LC = LC - lSpalteSchluessel

' Letzte Datenzeile in Zieltabelle
With wksZiel
ZeileZiel = .Cells(.Rows.Count, lSpalteSchluessel).End(xlUp).Row
End With

Application.ScreenUpdating = False
With wksQuelle
For ZeileQuelle = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
' Such-Werte aus Zeile in Zieltabelle einlesen
varSchluessel = CDate(.Cells(ZeileQuelle, lSpalteSchluessel) + .Cells(ZeileQuelle, lSpalteSchluessel + 1))
' Name in Spalte Schlüsselsäule im Zieltabelle suchen
Set Zelle = wksZiel.Columns(lSpalteSchluessel).Find(what:=varSchluessel, _
LookIn:=xlFormulas2, LookAt:=xlPart)
If Zelle Is Nothing Then ' neuer Datensatz
ZeileZiel = ZeileZiel + 1

'Spalte Datum und Zeit adiert einfügen
wksZiel.Cells(ZeileZiel, 1).Value = varSchluessel

'Restliche Daten ab Spalte 3 in Spalte2 und folgende einfügen
wksZiel.Cells(ZeileZiel, 2).Resize(1, LC).Value = _
.Cells(ZeileQuelle, lSpalteSchluessel + 2).Resize(1, LC).Value
End If
Next
End With
Application.ScreenUpdating = True
End Sub




LG UweD
Als Antwort auf diesen Beitrag
Demcko
26.05.2026 14:28:44
nur neue Daten kopieren. Spalte 1+2 (Datum/Uhrzeit)
Hallo,
wie muss ich unten stehenden Code (hier aus dem Forum) erweitern, damit Spalte 1 und 2 gemeinsam ausgewertet werden.
In Spalte 1 steht das Datum, in 2 die zugehörige Uhrzeit des Tages.
Nun soll auch die Uhrzeit des Tages für neue Daten erkannt werden.



Sub Datenabgleich_Schluessel()
Dim wbQuelle As Workbook, wksQuelle As Worksheet
Dim wbZiel As Workbook, wksZiel As Worksheet
Dim varSchluessel, lSpalteSchluessel As Long, Zelle As Range
Dim ZeileQuelle As Long, ZeileZiel As Long

' Tabelle mit ggf. neuen Daten
Set wbQuelle = Workbooks("MappeDaten.xls") ' Name anpassen!
Set wksQuelle = wbQuelle.Worksheets("Tabelle2") ' Name anpassen
' Tabelle in der Inhalte eingetragen werden sollen
Set wbZiel = Workbooks("MappeZiel.xls") ' Name anpassen!
Set wksZiel = wbZiel.Worksheets("Tabelle1") ' Name anpassen
' Nr. der Schlüsselspalte
lSpalteSchluessel = 1 ' ggf. anpassen

' Letzte Datenzeile in Zieltabelle
With wksZiel
ZeileZiel = .Cells(.Rows.Count, lSpalteSchluessel).End(xlUp).Row
End With

Application.ScreenUpdating = False
With wksQuelle
For ZeileQuelle = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
' Such-Werte aus Zeile in Zieltabelle einlesen
varSchluessel = .Cells(ZeileQuelle, lSpalteSchluessel)
' Name in Spalte Schlüsselsäule im Zieltabelle suchen
Set Zelle = wksZiel.Columns(lSpalteSchluessel).Find(what:=varSchluessel, _
LookIn:=xlValues, lookat:=xlWhole)
If Zelle Is Nothing Then ' neuer Datensatz
ZeileZiel = ZeileZiel + 1
.Rows(ZeileQuelle).Copy
wksZiel.Cells(ZeileZiel, 1).PasteSpecial Paste:=xlPasteValues
End If
Next
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Gruß
Demcko
Antwort auf Beitrag erstellen
Bitte einen Anwendernamen ohne @ eingeben.
Bitte das Passwort eingeben.
Bitte eine gültige E-Mail-Adresse eingeben.
Bitte einen Betreff eingeben.
Weitere Optionen
Aktivieren, wenn die Frage/der Beitrag noch nicht beantwortet wurde und unter Listen > Offene Threads erscheinen soll.
Beispieldatei hochladen

Bitte einen Nachrichtentext eingeben.