Clever-Excel-Forum

Normale Version: prüfen on Einträge vorhanden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum,

mit folgendem Code kopiere ich den Bereich A3:M2000 von Tabelle1
und füge Ihn an die nächste Leere Zeile in Tabelle2 an.
Wie müsste ich den Code optimieren, um vor dem Einfügen in Tabelle2
zu prüfen ob die Werte von Tabelle1 Spalte A3:A2000 bereits in Tabelle2 vorhanden sind.
Sind sie nicht vorhanden weiter mit einfügen der kopierten Daten,
sind sie vorhanden, MsgBox mit einer Meldung und Abbruch.


Code:
Sub Zeile_kopieren()
ActiveWorkbook.RefreshAll
'Bereich kopieren
Sheets("Tabelle1").Range("A3:M2000").Copy
'einfügen in erste freie Zeile in Tabelle2
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
'Kopiermodus beenden
Application.CutCopyMode = False
End Sub


Besten dank im Voraus
omron2003
Wie definierst du denn "schon vorhanden"?
- Ob in Tabelle2 schon irgendwelche Werte drinstehen?
- Ob dort exakt die gleichen Werte drinstehen?
- Was ist, wenn teilweise die gleichen Werte, teilweise andere Werte in Tabelle2 schon vorhanden sind?

Willst du womöglich aus Tabelle1 nur die Werte nach Tabelle2 kopieren, die dort noch nicht vorhanden sind?
Tabelle1 ist eine Importtabelle (Externe txt-Datei wird immer neu in Tabelle1 importiert und die Werte in Tabelle1 überschrieben),
Den Inhalt von Tabelle1 kopiere ich nun mit dem Code nach Tabelle2 und füge die Daten an die letzte freie Zeile an.
Wird das Makro versehentlich ein zweites mal gestartet, werden die Daten doppelt angefügt, das möchte ich verhindern.

Ich suche nun eine Möglichkeit einfach zu prüfen ob ein Wert aus Spalte ab A3:A2000 von Tabelle1 schon in Tabelle2 vorkommt.
Somit möchte ich nur Einträge aus Tabelle1 nach Tabelle2 anfügen die noch nicht vorhanden sind.

Gruß
omron2003
Müssen wirklich sämtliche Werte auf Vorhandensein in Tabelle2 geprüft werden? Oder würde es ausreichen, nur den ersten Eintrag zu prüfen? Denn wenn das Makro irrtümlich 2 mal ausgeführt wird, dann wäre ja der erste Eintrag schon doppelt.
Oder kann der möglicherweise trotzdem schon in Tabelle2 sein, obwohl das Makro noch nie ausgeführt wurde (also aus einem früheren Import)?
Es würde reichen wenn der erste Wert geprüft wir,
wäre der bereits vorhanden sind die anderen Werte logischerweise auch in Tabelle2 das stimmt.
Code:
Sub Zeile_kopieren()
Dim Suche As Range

ActiveWorkbook.RefreshAll

Set Suche = Sheets("Tabelle2").Columns(1).Find(what:=Sheets("Tabelle1").Range("A3"), lookat:=xlWhole)
If Suche Is Nothing Then
   Sheets("Tabelle1").Range("A3:M2000").Copy
   Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
   Application.CutCopyMode = False
Else
   MsgBox "Achtung, Werte wurden bereits kopiert! Kopieren wird abgebrochen."
End If

End Sub
Super,
genau das was ich gesucht haben.


Code:
lookat: =xlWhole


Sucht bestimmte Informationen in einem Bereich ("Tabelle1").Range("A3")  wenn ich das richtig verstehe...

Nochmals besten Dank
omron2003
Nein, das verstehst du falsch. Du musst dir die ganze Zeile zu Gemüte führen.
Code:
Set Suche = Sheets("Tabelle2").Columns(1).Find(what:=Sheets("Tabelle1").Range("A3"), lookat:=xlWhole)
Suche in Tabelle2, Spalte 1
Find(what:= --> Suche nach dem Wert aus Tabelle1, Zelle A3
lookat:=xlWhole --> Suche in der Suchespalte nach der ganzen Zelle (und nicht nach Teilen davon)