Excel - Daten im Array speichern und älteste Daten löschen

jerry0110

Erfahrenes Mitglied
Hallo zusammen,

ich brauche mal eure Hilfe. Ich habe noch nie mit Arrays gearbeitet.
Aber ich glaube, für die Lösung brauche ich Arrays.

Ich habe eine Tabelle mit 4 Spalten. Name, Typ, Adresse und Datum.

Es gibt von dem Namen viele Einträge aber mit einem unterschiedlichen Datum. Und ich möchte die beiden letzten Einträge mit dem neusten Datum behalten.
Und dass dann in einer Schleife mit allen weiteren Namen im Sheet.

Also der Name sind Standorte von Gebäuden. Wo eine Kontrolle gemacht wird mit einem Datum.

Ich weiß leider nicht wie ich anfangen soll.

Kann mir jemand helfen?
 
Du arbeitest direkt mit VBA in Excel?
Kannst du mal nen Screenshot von deiner Tabelle hier reinstellen?
mich interessiert vor allem ob du "Leerzeilen" über den Spalten-Überschriften hast
 
Man kann in Excel auch mit ADO arbeiten.
Du brauchst dazu im VBA-Editor unter Extras - Verweise einen Verweis auf
"Microsoft ActiveX Data Objects 6.1 Library" (ist zumindest die Version bei mir)
Dann ist es einfach per SQL das Zeug raus zu holen.

Achtung beim Connection-String: Hier hängt es davon ab welche Excel-Version du hast (ob eben dann OLEDB.16 und Excel 12.0 etc.)
Visual Basic:
Private xlCN As ADODB.Connection
Private xlRS As ADODB.Recordset
Private sCon As String
Private SQL As String

Privat Sub StartUp()
   sCon = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=""" & ThisWorkbook.FullName & """;Extended Properties=""Excel 12.0 Macro;HDR=Yes;IMEX=1"";"
Set xlCN = New ADODB.Connection
    xlCN.Open sCon
SQL = "SELECT * FROM [Tabelle1$]"
Set xlRS = New ADODB.Recordset
    xlRS.CursorLocation = adUseClient
    xlRS.Open SQL, xlCN, adOpenDynamic, adLockReadOnly
End Sub
 
Hab gerade festgestellt, dass man es u.U. auch ohne VBA lösen könnte:
In Spalte E einfügen und dann nach unten kopieren.
In meinen Testdaten war Zeile 17 die letzte. Musst bei dir anpassen
Code:
'Spalte A ist ID, Spalte D dein Datum
=SUMMENPRODUKT(($A$2:$A$17=A2)*(D2<$D$2:$C$17))+1
Jetzt kannst du in Spalte E filtern auf "grösser 2"
In meinem Screenshot ist das Datum in Spalte C, als nicht vom "C" in der Formel irritieren lassen

1665744240031.png
 
Zuletzt bearbeitet:
Hab gerade festgestellt, dass man es u.U. auch ohne VBA lösen könnte:
In Spalte E einfügen und dann nach unten kopieren.
In meinen Testdaten war Zeile 17 die letzte. Musst bei dir anpassen
Code:
'Spalte A ist ID, Spalte D dein Datum
=SUMMENPRODUKT(($A$2:$A$17=A2)*(D2<$D$2:$C$17))+1
Jetzt kannst du in Spalte E filtern auf "grösser 2"
In meinem Screenshot ist das Datum in Spalte C, als nicht vom "C" in der Formel irritieren lassen

Anhang anzeigen 66907
Das hat super funktioniert. Danke
 
Zurück