Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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

VBA -Werte nach Datum in bestehende Liste einfügen

VBA -Werte nach Datum in bestehende Liste einfügen
22.07.2015 13:09:50
NicNac75
Hallo liebe Foren-Mitglieder,
nachdem mir dieses Forum in der Vergangenheit immer wieder beste Dienste erwiesen hat, um mein gefährliches Halbwissen etwas zu vergrößern, will ich es heute mal mit einer eigenen Frage versuchen, für die ich bislang keine Lösung gefunden habe:
Ich möchte ganze Zeilen (immer gleicher Aufbau) mittels VBA in eine existente Liste kopieren, Aufbau: Datum; Wert, Wert, Wert, ...., Wert.
Die Herausforderung (zumindest für mich bislang nicht lösbar):
Ist in der Liste eine Zeile mit Datum in der ersten Spalte = dem Datum der einzufügenden Zeile, dann soll die Zeile überschrieben werden.
Ist das Datum neuer als das aller schon existenten Zeilen, dann soll der Wert in die nächstfreie Zeile kopiert werden.
Es soll also eine Liste entstehen, in der jedes Datum mit den dazugehörigen nebenstehenden Werten der Zeile nur einmal existiert. Ziel ist es darüber ein Verarbeitungsprotokoll zu erzeugen (falls dies für das Verständnis wichtig sein sollte).
Hier nochmals im Detail (mit Beispiel):
Existente Liste:
01.07.2014 Günter Dieter Hans Elvis 990 k6t
02.07.2014 Peter Günter Klaus Simon 461 i71
03.07.2014 Hans Günter Karl Emil 555 kl1
04.07.2015 Lothar Boris Klaus Elvis 880 l88
05.07.2015 Emil Richard Hans Klaus 771 p55
Szenario 1: in die obige Liste zu kopierende Zeile, Datum schon vorhanden - Ziel: Zeile ersetzen
03.07.2014 Ida Monika Klara Petra 874 o85
Szenario 2: in die obige Liste zu kopierende Zeile, Datum noch nicht vorhanden - Ziel: Zeile unten anfügen
08.07.2014 August Karl Heinrich Dieter 779 D4w
Mir schwebt folgendes vor:
a) Kopiere Zeile (die eingefügt werden soll) aus anderem Tabellenblatt
b) Prüfe ob in Spalte A (dort steht das Datum) das Datum aus der ersten Zelle der einzufügenden Zeile schon vorhanden ist
c) wenn ja, dann einfügen und ersetzen in dieser Zeile
d) wenn nein, dann einfügen in der ersten freien Zeile unter der Liste
e) Gesamte Liste nach Spalte A sortieren (das kriege ich selbst hin)
Müsste also eine Art Suchen/Ersetzen kombiniert mit Wenn/Dann Funktion werden...
Ich hoffe, ich konnte mein Anliegen klar machen und würde mich freuen, wenn mich jemand bei der Lösung unterstützen könnte, wie ein entsprechendes Makro aussehen müsste.
Schon vorab vielen Dank für jegliche Hilfestellung.
Schon vorab vielen Dank für Eure Unterstützung.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Musterdatei?
22.07.2015 15:32:51
Klexy
Und warum lädst du keine Musterdatei hoch?

AW: Musterdatei?
22.07.2015 17:06:46
NicNac75
Hallo Klexy,
erstmal danke für Deine Antwort - hatte gehofft, es würde auch ohne funktionieren.
Hier in Dateiform.
https://www.herber.de/bbs/user/99018.xlsx
Viele Grüße,
NicNac75

Vorgehensweise...
22.07.2015 17:09:27
Frank
Hallo,
a) braucht's nicht. Werte können direkt zugewiesen werden
Sheets("Ziel").cells(2,1).value=Sheets("Quelle").cells(5,1).value

Weist Zelle A2 des Blattes "Ziel" den Wert der Zelle A5 von Blatt "Quelle" zu
b)IF-THEN
If not isempty(Sheets("Ziel").cells(2,1).value) then
'Mach irgendwas
end if

Guckt ob in Zelle A2 Blatt "Ziel" was drinsteht. Wenn nicht wird der Code der Then-Prozedur ausgeführt
c) siehe b)
If Sheets("Ziel").cells(2,1).value=Sheets("Quelle").cells(5,1).value then
'Mach irgendwas
end if

d) ELSE verwenden
If Sheets("Ziel").cells(2,1).value=Sheets("Quelle").cells(5,1).value then
'Mach irgendwas
Else
lZZ=Sheets("Ziel").Range("A10000").end(xlup).row
Sheets("Ziel").cells(lZZ+1,1).value=Sheets("Quelle").cells(5,1).value
end if

Ist die erste Bedingung nicht erfüllt, wird der Code des ELSE-Teils ausgeführt. Im Beispiel wird die letzte benutzte Zeile in Spalte A ermittelt und der Variablen lZZ zugewiesen. Damit wird dann die Zelle adressiert, in der der neue Wert stehen soll.
Grüsse,
Frank

Anzeige
AW: Vorgehensweise...
22.07.2015 17:29:44
NicNac75
Hallo Frank,
vielen Dank - verstanden und hilft sehr, aber um die Liste sozusagen auf einen Treffer abzugrasen, müsste ich doch vermutlich noch eine Schleife einfügen, oder? Er soll ja Zeile für Zeile auf Übereinstimmung prüfen und dann
a) bei Übereinstimmung einsetzen (Werte ersetzen/Überschreiben)
b) erst wenn keine Übereinstimmung gefunden wird, unten anfügen.
Mit fehlt also noch die Dynamik um die existente Liste zu durchsuchen, ansonsten aber verstanden.
Danke soweit schon mal, vielleicht kannst Du mir auch für das fehlende "Puzzle-Teil" weiterhelfen...;-)

Anzeige
AW: Vorgehensweise...
23.07.2015 07:29:39
NicNac75
Hallo Klexy,
danke, ohne Deine Hilfe hätte ich diesen Thread sicher nicht gefunden. Mit der dortigen Lösung sollte ich auch in meinem Fall weiterkommen.
Vielen Dank für die Unterstützung.

342 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige