Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dringende Hilfe bei VBA-Code
#1
Hallo zusammen,

Ich habe folgendes Problem:
In einer Excel Liste stehen in der Spalte A mehrere Artikelnummern, diese Artikelnummern können mehrmals auftauchen. In der Spalte AH steht das dazugehörige Änderungsdatum zu dem Artikel. Ich bräuchte nun ein Vba Code, der wenn eine Artikelnummer mehrmals vorhanden ist, das jüngste (also aller erste) Änderungsdatum sucht und dies in das neueste Änderungsdatum kopiert. (also in die letzte hinzugefügte Artikelnummer, mit neuestem Änderungsdatum)
Zu guter Letzt sollen alle doppelt vorhandene Artikelnummer gelöscht werden und nur der letzte getätigte Eintrag, also neuste Artikelnummer mit dem hinzugefügten ältestem Datum stehen bleiben.

Ich hoffe, dass ich mein Problem einigermaßen verständlich beschrieben habe.
Über eure Hilfe wäre ich sehr dankbar und bedanke mich vorab.

Gruß
Antworten Top
#2
(10.11.2017, 08:01)JF2707 schrieb: das jüngste (also aller erste) Änderungsdatum 
Aufgrund solcher begrifflichen Katastrophen sind Beispiele besser, als Text.
Antworten Top
#3
Hallo,

ich weiß nicht, ob ich Dein Vorhaben richtig verstanden habe:
(10.11.2017, 08:01)JF2707 schrieb: In der Spalte AH steht das dazugehörige Änderungsdatum zu dem Artikel. ... wenn eine Artikelnummer mehrmals vorhanden ist, das jüngste (also aller erste) Änderungsdatum sucht
Wie oft bruchst Du das? Das ganze könnte man auch mit einer Formel lösen, z. B.
Code:
AI2 =WENN(AGGREGAT(14;4;($A$2:$A$9=A2)*$AH$2:$AH$9;1)=AH2;"Löschen";"")
Nun nach Spalte AI filtern und die Einträge mit "Löschen" in der Zelle auswählen und die Zeilen löschen. Fertig.

EDIT: Ab XL2016 gibt es mW MAXWENN. Dies wäre dann eine Alternative für die verwendete AGGREGAT-Funktion.
Gruß
Michael
Antworten Top
#4
Hallo zusammen,

vielen Dank für Eure schnelle Antwort.

Also nochmal als Bsp.



Spalte A1   Spalte B1  Spalte C1 usw.       Spalte AH
Artikel: 1           x           x                         Datum:01.11.2017
Artikel: 1           x           x                         Datum:02.11.2017
Artikel: 1           x           x                         Datum:03.11.2017
Artikel: 1           x           x                         Datum:04.11.2017
Artikel: 1           x           x                         Datum:05.11.2017
Artikel: 1           x           x                         Datum:06.11.2017



                       Spalte A1   Spalte B1  Spalte C1 usw.       Spalte AH
Nehme mir von Artikel: 1         x                x      das Datum 01.11.2017     und ersetzte so:


                      Spalte A1   Spalte B1  Spalte C1 usw.       Spalte AH
                      Artikel: 1         x                 x                     01.11.2017    (Nur diese Zeile von Artikel 1 soll stehen bleiben)


Gruß
Antworten Top
#5
Ja, Dein Beispiel zeigt, dass ich auf dem richtigen Weg bin. Hast Du es denn ausprobiert?
Formel -> Autofilter -> Zeilen löschen sollte genau das sein, was Du suchst
Gruß
Michael
Antworten Top
#6
@Steuerfuzzi

So, gerade getestet...
In jedenr Zelle (Spalte AI) wo nun Löschen steht, soll die ganze Zeile NICHT gelöscht werden.
Ist ja vom Prinzip egal, da ich die Formel so umgeändert habe:

=WENN(AGGREGAT(14;4;($A$2:$A$43=A2)*$AH$2:$AH$43;1)=AH2;"nicht löschen";"")

Du bist, bzw. warst also absolut auf dem richtigen Weg

Jetzt müsste ich nur das das Problem mit dem Datum lösen.


Danke Dir
Gruß
Antworten Top
#7
Ist das Problem, dass das Wort Datum in der Zelle steht?
Suchen nach "Datum:" ersetze durch ""
Gruß
Michael
Antworten Top
#8
Nein, ist nicht das Problem.

mir ist gerade aufgefallen, dass deine Formel komischerweise auch nicht immer richtig Funktioniert.
D.h. bei manschen gleichen Artikelnummer funktioniert es, bei manchen wiederum nicht. (Der Fehler muss irgendwo in der Tabelle liegen und nicht an deiner Formel)

Ich suche gerade parallel im Netz nach einem VBA-Code, der mir alle Duplikate löscht, außer den Ersten und letzten Eintrag!!!
So könnte ich meine Problem auch lösen, da die jeweiligen Datumseinträge alle aufsteigend sind.

Gruß
Antworten Top
#9
Hi.

vielleicht sind bei manchen Artikelnummern Leerzeichen am Anfang oder Ende?
Antworten Top


Gehe zu:


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