Clever-Excel-Forum

Normale Version: Dringende Hilfe bei VBA-Code
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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ß
(10.11.2017, 08:01)JF2707 schrieb: [ -> ]das jüngste (also aller erste) Änderungsdatum 
Aufgrund solcher begrifflichen Katastrophen sind Beispiele besser, als Text.
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.
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ß
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
@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ß
Ist das Problem, dass das Wort Datum in der Zelle steht?
Suchen nach "Datum:" ersetze durch ""
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ß
Hi.

vielleicht sind bei manchen Artikelnummern Leerzeichen am Anfang oder Ende?