Anzeige
Archiv - Navigation
1840to1844
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
Inhaltsverzeichnis

Wenn Zeile nicht existiert dann einfügen

Wenn Zeile nicht existiert dann einfügen
11.08.2021 15:23:14
Emanuel
Hallo zusammen.
Ich versuche eine VBA Macro zu programmieren die mir erlaubt eine Zelle von der einen Tabelle1 zu Tabelle2 zu kopieren und vorher überprüft ob die Zelle die kopiert wird bereits in Tabelle2 vorhanden ist. Dabei soll die hinzugefügte neue Zelle in Tabelle2 unterhalb der bereits existierenden hinzugefügt werden. hier die mappe wie sie derzeit aussieht : https://www.herber.de/bbs/user/147555.htm
mein bisheriger code sieht so aus:

Sub ZeileEinfuegen()
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim rng As Range
Dim lngZeile As Long, lngZeileMax As Long
Dim lngZeileEinfuegen As Long
Set wsQuelle = Worksheets("Tabelle1")
Set wsZiel = Worksheets("Tabelle2")
'Letzte beschriebene Zelle in Spalte 3 von Import_user
lngZeileMax = wsQuelle.Cells(Rows.Count, 2).End(xlUp).Row
'letzte beschriebene Zelle in Spalte 2 von Datenbank
lngZeileEinfuegen = wsZiel.Cells(Rows.Count, 2).End(xlUp).Row
'Gehe durch alle Eingaben von Import_user
For lngZeile = 2 To lngZeileMax
'Ist der Eintrag bereits in der Datenbank enthalten?
Set rng = wsZiel.Columns(2).Find(What:=wsQuelle.Cells(lngZeile, 2).Value, LookAt:=xlWhole)
'Wenn der datensatz nicht vorhanden ist,...
If rng Is Nothing Then
'dann in die nächste Zeile
lngZeileEinfuegen = lngZeileEinfuegen + 1
'und füge den Inhalt ein.
wsZiel.Cells(lngZeileEinfuegen, 1).Value = wsQuelle.Cells(lngZeile, 3).Value
End If
Next
End Sub
>
Danke schonmal im Voraus für eure hilfe.
mfg

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Zeile nicht existiert dann einfügen
11.08.2021 16:23:45
Werner
Hallo,
der Link funktioniert nicht (zumindest bei mir)
Im Code ist einiges mißverständlich:

'Letzte beschriebene Zelle in Spalte 3 von Import_user
lngZeileMax = wsQuelle.Cells(Rows.Count, 2).End(xlUp).Row
du schreibst letzte beschriebene Zelle in Spalte 3 - ermittelst die dann aber in Spalte 2 ?
im Zielblatt ermittelst du die letzte beschriebene Zelle in Spalte 2

lngZeileEinfuegen = wsZiel.Cells(Rows.Count, 2).End(xlUp).Row
anschließend schreibst du die Daten dann aber in Spalte 1 ?

wsZiel.Cells(lngZeileEinfuegen, 1).Value = wsQuelle.Cells(lngZeile, 3).Value
hier gleichst du per Find die Spalte B im Quellblatt mit der Spalte B im Zielblatt ab

Set rng = wsZiel.Columns(2).Find(What:=wsQuelle.Cells(lngZeile, 2).Value, LookAt:=xlWhole)
überträgst dann aber den Wert aus Spalte C obwohl du vorher geschrieben hast: ob die Zelle die kopiert wird bereits in Tabelle2 vorhanden ist
du überprüfst Spalte B und "kopierst" Spalte C ?
Also bitte eine Beispielmappe.
Gruß Werner
Anzeige
AW: Wenn Zeile nicht existiert dann einfügen
11.08.2021 16:38:19
Emanuel
Hallo Werner,
den Quellcode habe ich von einem anderem Forum. ich habe ihn hier nochmal etwas abgeändert mir sind die Fehler nach posten des Threads auch aufgefallen.
Userbild
Userbild

Option Explicit
Sub ZeileEinfuegen()
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim rng As Range
Dim lngZeile As Long, lngZeileMax As Long
Dim lngZeileEinfuegen As Long
Set wsQuelle = Worksheets("Tabelle1")
Set wsZiel = Worksheets("Tabelle2")
'Letzte beschriebene Zelle in Spalte 2 von Tabelle1
lngZeileMax = wsQuelle.Cells(Rows.Count, 2).End(xlUp).Row
'letzte beschriebene Zelle in Spalte 2 von Tabelle2
lngZeileEinfuegen = wsZiel.Cells(Rows.Count, 2).End(xlUp).Row
'Gehe durch alle Eingaben von Tabelle1
For lngZeile = 2 To lngZeileMax
'Ist der Eintrag bereits in der Tabelle2 enthalten?
Set rng = wsZiel.Columns(2).Find(What:=wsQuelle.Cells(lngZeile, 2).Value, LookAt:=xlWhole)
'Wenn der datensatz nicht vorhanden ist,...
If rng Is Nothing Then
'dann in die nächste Zeile
lngZeileEinfuegen = lngZeileEinfuegen + 1
'und füge den Inhalt ein.
wsZiel.Cells(lngZeileEinfuegen, 1).Value = wsQuelle.Cells(lngZeile, 3).Value
End If
Next
End Sub
Ich möchte noch kurz anmerken, dass ich mich mit python gut auskenne aber bei vba blicke ich einfach nicht durch :D
Anzeige
AW: Wenn Zeile nicht existiert dann einfügen
11.08.2021 17:07:54
Werner
Hallo,
und das ist jetzt eine Beispielmappe oder ein Bild?
Soll ich deine Datei nachbauen um dir zu helfen?
Gruß Werner
AW: Wenn Zeile nicht existiert dann einfügen
11.08.2021 19:04:41
Emanuel
Hallo Werner,
Ich wusste bis grade nicht, dass ich sogar ganze mappen hochladen kann, hier die mappe
https://www.herber.de/bbs/user/147565.xlsx
AW: Wenn Zeile nicht existiert dann einfügen
11.08.2021 20:41:41
Werner
Hallo,
da hast du dir ja mal richtig Mühe gemacht. Eine Beispielmappe mit einem einzigen Datensatz, ziemlich sinnvoll.
Trotzdem deine Mappe zurück. Das Makro kopiert zunächst einfach alles ins Blatt 2 und entfernt dann die Duplikate anhand Tabelle2 Spalte A.
https://www.herber.de/bbs/user/147566.xlsm
Gruß Werner
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige